static int Main(string[] arguments)
        {
            CoreSettings settings = new CoreSettings();
            Parser parser = new Parser(s => {
                s.IgnoreUnknownArguments = true;
                s.CaseSensitive = true;
            });

            if(!parser.ParseArguments(arguments, settings)) {
                return 1;
            } else {
                return Launch(settings, arguments);
            }
        }
        private static int Launch(CoreSettings settings, string[] arguments)
        {
            settings.Arguments = arguments;

            IKernel kernel = new StandardKernel(new NinjectSettings {
                LoadExtensions = true
            });

            kernel.Bind<ILogger>()
                .ToProvider(new LoggerProvider((settings)));
            kernel.Bind<ICore>()
                .To<NinjectCore>()
                .InSingletonScope()
                .WithConstructorArgument("kernel", kernel)
                .WithConstructorArgument("settings", settings);

            ICore core = kernel.Get<ICore>();

            Console.CancelKeyPress += new ConsoleCancelEventHandler((source, args) => core.Stop());

            core.Start();

            return 0;
        }