public MainForm(IEc2Caller ec2Caller, ISqsCaller sqsCaller, WorkerCaller workerCaller)
        {
            this.ec2Caller = ec2Caller;
            this.sqsCaller = sqsCaller;
            this.workerCaller = workerCaller;
            InitializeComponent();

            Action<AwsRegionControl, AwsRegionLocations> setupRegions = (control, region) =>
            {
                control.RegionLocation = region;
                controlRegionDictionary.Add(region, control);
            };

            setupRegions(UsEastRegion, AwsRegionLocations.UsEast);
            setupRegions(UsWest1Region, AwsRegionLocations.UsWest1);
            setupRegions(UsWest2Region, AwsRegionLocations.UsWest2);
            setupRegions(SaEastRegion, AwsRegionLocations.SaEast);
            setupRegions(EuWestRegion, AwsRegionLocations.EuWest);
            setupRegions(AsiaNortheastRegion, AwsRegionLocations.ApNortheast);
            setupRegions(AsiaSoutheast1Region, AwsRegionLocations.ApSoutheast1);
            setupRegions(AsiaSoutheast2Region, AwsRegionLocations.ApSoutheast2);

            foreach (var control in controlRegionDictionary.Values)
            {
                control.RegionIdLabelClicked += (o, region) => ShowRegionDetails(region);
                control.AddInstanceButtonClicked += (o, region) => LaunchInstance(region);
                control.RemoveInstanceButtonClicked += (o, region) => TerminateInstance(region);
            }
        }
        static void Main()
        {
            // Keeping things simple by not using DI here

            //ICredentialsRetriever credentialsRetriever = new FileBasedCredentialsRetriever(@"C:\aws-talk\aws-talk-credentials.txt");
            ICredentialsRetriever credentialsRetriever = new SimpleCredentialsRetriever("YourAccessKey", "YourSecretKey");

            if (!credentialsRetriever.CredentialsExist())
            {
                throw new Exception("AWS credentials not found. Please use SimpleCredentialsRetriever (above) to enter your AWS credentials)");
            }
            
            var s3Bucket = "aws-talk";
            var workerAmi = "aws-talk-base";
            var securityGroup = "aws-talk";
            var keyPair = "aws-talk";
            var queueUrl = "https://sqs.us-east-1.amazonaws.com/025631894481/aws-talk";

            var ec2Caller = new Ec2Caller(credentialsRetriever, workerAmi, securityGroup, keyPair);
            var sqsCaller = new SqsCaller(credentialsRetriever, queueUrl);
            //var ec2Caller = new FakeEc2Caller();
            var workerCaller = new WorkerCaller(credentialsRetriever, s3Bucket);

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm(ec2Caller, sqsCaller, workerCaller));
        }