private void Form1_Load(object sender, EventArgs e)
        {
            var    tradeStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SingleResponsibilityPrinciple.trades.txt");
            String tradeUrl    = "http://faculty.css.edu/tgibbons/trades100.txt";

            var logger = new ConsoleLogger();
            //var logger = new GuiLogger(lbStatus.Items);

            //var tradeDataProvider = new StreamTradeDataProvider(tradeStream);
            var tradeDataProvider = new UrlTradeDataProvider(tradeUrl);

            var tradeValidator = new SimpleTradeValidator(logger);
            var tradeMapper    = new SimpleTradeMapper();
            var tradeParser    = new SimpleTradeParser(tradeValidator, tradeMapper);

            ITradeStorage tradeStorage = new AsyncTradeStorage(logger);

            tradeProcessor = new TradeProcessor(tradeDataProvider, tradeParser, tradeStorage);
        }
        static void Main(string[] args)
        {
            var    tradeStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SingleResponsibilityPrinciple.trades.txt");
            String tradeUrl    = "http://faculty.css.edu/tgibbons/trades4.txt";

            var logger = new ConsoleLogger();

            //var tradeDataProvider = new StreamTradeDataProvider(tradeStream);
            var tradeDataProvider = new UrlTradeDataProvider(tradeUrl);

            var tradeValidator = new SimpleTradeValidator(logger);
            var tradeMapper    = new SimpleTradeMapper();
            var tradeParser    = new SimpleTradeParser(tradeValidator, tradeMapper);

            var tradeStorage = new AsyncTradeStorage(logger);

            var tradeProcessor = new TradeProcessor(tradeDataProvider, tradeParser, tradeStorage);

            tradeProcessor.ProcessTrades();

            Console.ReadKey();
        }