private bool ParseArguments(string[] args)
        {
            string siloName = Dns.GetHostName(); // Default to machine name

            int siloPort         = 9800;
            int proxyGatewayPort = 9880;

            int argPos = 1;

            for (int i = 0; i < args.Length; i++)
            {
                string a = args[i];
                if (a.StartsWith("-") || a.StartsWith("/"))
                {
                    switch (a.ToLowerInvariant())
                    {
                    case "/?":
                    case "/help":
                    case "-?":
                    case "-help":
                        // Query usage help
                        return(false);

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                else if (a.Contains("="))
                {
                    string[] split = a.Split('=');
                    if (String.IsNullOrEmpty(split[1]))
                    {
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }

                    switch (split[0])
                    {
                    case "silo":
                        siloPort = int.Parse(split[1]);
                        break;

                    case "proxy":
                        proxyGatewayPort = int.Parse(split[1]);
                        break;

                    default:
                        Console.WriteLine("Bad command line arguments supplied: " + a);
                        return(false);
                    }
                }
                // unqualified arguments below
                else if (argPos == 1)
                {
                    siloName = a;
                    argPos++;
                }
                else
                {
                    // Too many command line arguments
                    Console.WriteLine("Too many command line arguments supplied: " + a);
                    return(false);
                }
            }

            var config = new ClusterConfiguration();

            config.StandardLoad();
            config.Defaults.Port = siloPort;
            config.Defaults.ProxyGatewayEndpoint = new IPEndPoint(config.Defaults.ProxyGatewayEndpoint.Address,
                                                                  proxyGatewayPort);

            config.Globals.DeploymentId            = "BetLab.Meetup";
            config.Globals.LivenessType            = GlobalConfiguration.LivenessProviderType.Custom;
            config.Globals.MembershipTableAssembly = "OrleansConsulUtils";
            config.Globals.ReminderServiceType     = GlobalConfiguration.ReminderServiceProviderType.Disabled;

            config.Globals.RegisterBootstrapProvider <Dashboard>("Dashboard", new Dictionary <string, string>()
            {
                ["Port"] = "8080"
            });

            config.AddStateStorageBasedLogConsistencyProvider();

            _siloHost = new SiloHost(siloName, config);

            return(true);
        }