private RemoteTaskResult InnerPerformTask(RemoteTask task)
        {
            EnsureXulInit();

            // TODO inject GeckoFX Dependencies
            using (var captureEngine = new GeckoCaptureEngine(task.BrowserSize, task.GetTrigger(), task.GetCaptureZone())
            {
                AcceptLanguages = task.AcceptLanguages,
                UserAgent = task.UserAgent
            })
            {
                if (task.Cookies != null)
                {
                    foreach (var cookie in task.Cookies)
                    {
                        captureEngine.Cookies.Add(cookie);
                    }
                }

                using (var captureResult = captureEngine.CaptureUrl(task.Url, task.Timeout))
                {
                    var taskResult = new RemoteTaskResult();

                    using (var memoryStream = new MemoryStream())
                    {
                        captureResult.Save(memoryStream, ImageFormat.Png);
                        taskResult.PayLoad = memoryStream.ToArray();
                    }


                    return(taskResult);
                }
            }
        }