void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            //validate args
            if (String.IsNullOrEmpty(AWSAccessKey) || String.IsNullOrEmpty(AWSSecretKey))
            {
                e.Result = null;
                return;
            }

            //ec2 client
            var ec2 = AWSClientFactory.CreateAmazonEC2Client(AWSAccessKey,
                                                             AWSSecretKey,
                                                             new AmazonEC2Config().WithServiceURL(RegionHelper.EC2EndpointForRegion(EC2Region))
                                                             );

            var elbClient = AWSClientFactory.CreateAmazonElasticLoadBalancingClient(AWSAccessKey,
                                                                                    AWSSecretKey,
                                                                                    new AmazonElasticLoadBalancingConfig()
            {
                ServiceURL = RegionHelper.ELBEndpointForRegion(EC2Region).Replace("http:", "https:")
            });

            DescribeLoadBalancersResponse loadBalancers = null;

            try
            {
                loadBalancers = elbClient.DescribeLoadBalancers();
            }
            catch (WebException wex)
            {
                var response      = wex.Response as HttpWebResponse;
                var responsveBody = new StreamReader(response.GetResponseStream()).ReadToEnd();
                int a             = 5;
            }

            e.Result = loadBalancers.DescribeLoadBalancersResult.LoadBalancerDescriptions.
                       Select(lb => new AWSLoadBalancerServersRetreiverCompleteEventArgs.LoadBalancer {
                LoadBalancerName = lb.LoadBalancerName,
                InstanceNames    = lb.Instances.Select(instance => instance.InstanceId).ToList()
            }).
                       ToList();
        }