public RenderResponse Packet_Render(RenderRequest req)
        {
            if (!_blender.IsVersionAvailable(req.Version))
            {
                return new RenderResponse()
                       {
                           TaskID  = req.TaskID,
                           Success = false,
                           Message = "Version not prepared.."
                       }
            }
            ;

            try
            {
                //Validate Settings
                string filePath = SessionData.GetFilePath(req.SessionID);

                if (filePath == null)
                {
                    return new RenderResponse()
                           {
                               TaskID  = req.TaskID,
                               Success = false,
                               Message = "Blend file was not available"
                           }
                }
                ;

                if (req.Settings == null)
                {
                    req.Settings = new Shared.RenderPacketModel();
                }
                if (req.Settings.Cores <= 0)
                {
                    req.Settings.Cores = Environment.ProcessorCount;
                }

                req.Settings.Cores = Math.Min(Environment.ProcessorCount, req.Settings.Cores);

                DateTime lastUpdate = DateTime.Now;

                List <string> exceptions = new List <string>();

                //Render
                string file = _blender.Render(req.Version, filePath,
                                              BlenderRenderSettings.FromRenderSettings(req.Settings),
                                              (process) =>
                {
                    process.OnBlenderStatus += (state) =>
                    {
                        if (DateTime.Now.Subtract(lastUpdate).TotalMilliseconds > UPDATE_TIMING_MS)
                        {
                            lastUpdate = DateTime.Now;
                            SendPacket(new RenderInfoResponse()
                            {
                                TaskID        = req.TaskID,
                                TilesFinished = state.TilesFinish,
                                TilesTotal    = state.TilesTotal,
                                Time          = state.Time,
                                TimeRemaining = state.TimeRemaining
                            });
                        }
                    };
                    process.OnBlenderException += (excp) => exceptions.Add(excp);
                });

                //Handle Result
                if (file == null || !File.Exists(file))
                {
                    if (exceptions.Count == 0)
                    {
                        return new RenderResponse()
                               {
                                   TaskID  = req.TaskID,
                                   Success = false,
                                   Message = "Missing Files?"
                               }
                    }
                    ;
                    else
                    {
                        return new RenderResponse()
                               {
                                   TaskID  = req.TaskID,
                                   Success = false,
                                   Message = string.Join(", ", exceptions)
                               }
                    };
                }
                else
                {
                    byte[] data = File.ReadAllBytes(file);

                    File.Delete(file);
                    return(new RenderResponse()
                    {
                        Success = true,
                        TaskID = req.TaskID,
                        Data = data
                    });
                };
            }
            catch (Exception ex)
            {
                return(new RenderResponse()
                {
                    TaskID = req.TaskID,
                    Success = false,
                    Message = "Exception:" + ex.Message
                });
            }
        }