public CSVPresenter(IMainView main, ICSVView csv, ICSVReadService reader, DelimiterStep delim)
        {
            _main   = main;
            _csv    = csv;
            _reader = reader;
            _delim  = delim;

            _csv.HeaderSelected += _csv_HeaderSelected;
            _csv.MetadataAdded  += _csv_MetadataAdded;
            _csv.ReadyToShow    += _csv_ReadyToShow;

            _delim.DelimiterSelected += _delim_DelimiterSelected;


            _main.FileAndIndexSelected += _view_FileAndIndexSelected;

            //IndexService.FileIndexed += IndexService_FileIndexed;
        }
        static void Main()
        {
            NGramService       ngrammer     = new NGramService();
            ConcordanceService concordancer = new ConcordanceService();

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            MainWindow        main      = new MainWindow();
            CSVLoader         loader    = new CSVLoader();
            LinearHeatmapForm heatmap   = new LinearHeatmapForm();
            DelimiterStep     delim     = new DelimiterStep();
            ChartForm         chart     = new ChartForm();
            Suggester         suggester = new Suggester();

            CSVReadService                    fileReader = new CSVReadService();
            SearchService                     searcher   = new SearchService();
            HeatmapService                    heater     = new HeatmapService();
            FolderService                     folder     = new FolderService();
            DatasetStatisticsService          dataset    = new DatasetStatisticsService();
            TaggedCollectionStatisticsService corpus     = new TaggedCollectionStatisticsService();

            //var tagger = main;
            TagService       service          = new TagService();
            TagsetEditor     editor           = new TagsetEditor();
            TagFileWriter    writer           = new TagFileWriter();
            TagPresenter     tagPresenter     = new TagPresenter(main, main, service, editor, writer);
            TagsetPresenter  tagsetPresenter  = new TagsetPresenter(editor, service, main);
            SuggestPresenter suggestPresenter = new SuggestPresenter(suggester, main, main);
            MainPresenter    presenter        = new MainPresenter(main, main, service, loader, searcher, folder, dataset, corpus, concordancer, ngrammer);

            CSVPresenter     csv = new CSVPresenter(main, loader, fileReader, delim);
            HeatmapPresenter heatmapPresenter = new HeatmapPresenter(main, heatmap, heater);
            ChartPresenter   chartPresenter   = new ChartPresenter(main, chart);

            main.AddOwnedForm(delim);
            Application.Run(main);
        }