public void Compose(IServiceRegistry serviceRegistry)
    {
        serviceRegistry.Register <IDizApp, DizApp>();
        serviceRegistry.Register <ICommonGui, CommonGui>();

        serviceRegistry.Register <IImportRomDialogView, ImportRomDialog>("ImportRomView");
        serviceRegistry.Register <IProgressView, ProgressDialog>("ProgressBarView");
        serviceRegistry.Register <ILogCreatorSettingsEditorView, LogCreatorSettingsEditorForm>("ExportDisassemblyView");
        serviceRegistry.Register <ILabelEditorView, AliasList>("LabelEditorView");
        serviceRegistry.Register <IMainGridWindowView, MainWindow>("MainGridWindowView");

        // the (string) names of the views above will be mapped to the method names of the interface below.
        // i.e. calling IViewFactory.GetLabelEditorView() will look for somthing named "LabelEditorView"
        serviceRegistry.EnableAutoFactories();
        serviceRegistry.RegisterAutoFactory <IViewFactory>();


        // coming soon. backported from upcoming 3.0 branch
        // serviceRegistry.RegisterSingleton<IDizApplication, DizApplication>();
        // serviceRegistry.Register<IMarkManyView, MarkManyView>();
        // serviceRegistry.Register(
        //     typeof(IDataSubsetRomByteDataGridLoader<,>),
        //     typeof(DataSubsetRomByteDataGridLoader<,>)
        //     );
        //
        // serviceRegistry.Register<IBytesGridViewer<ByteEntry>, DataGridEditorControl>();
        // serviceRegistry.Register<IDataGridEditorForm, DataGridEditorForm>();
        //
        // serviceRegistry.Register<IStartFormViewer, StartForm>("StartForm");
        //
        // serviceRegistry.Register<IDataGridEditorForm, DataGridEditorForm> ("DataGridForm");
    }
    public void Compose(IServiceRegistry serviceRegistry)
    {
        serviceRegistry.Register <IProjectController, ProjectController>("ProjectController");
        serviceRegistry.Register <ILogCreatorSettingsEditorController, LogCreatorSettingsEditorController>("AssemblyExporterSettingsController");
        serviceRegistry.Register <IImportRomDialogController, ImportRomDialogController>("ImportRomDialogController");
        serviceRegistry.Register <ILargeFilesReaderController, LargeFilesReader>("LargeFileReaderProgressController");

        serviceRegistry.EnableAutoFactories();
        serviceRegistry.RegisterAutoFactory <IControllerFactory>();

        serviceRegistry.Register <IDizDocument, DizDocument>();

        // sorry this is all a huge WIP mess, cleanup incoming soon.

        // serviceRegistry.Register<int, int, IReadOnlySnesRom, IMarkManyController>(
        //     (factory, offset, whichIndex, data) =>
        //     {
        //          // TODO: update this with updated controller from Diz 2.0 branch.
        //          // I think that means kill 'whichIndex', use the new format that doesn't rely on it.
        //         var view = factory.GetInstance<IMarkManyView>();
        //         var markManyController = new MarkManyController(offset, whichIndex, data, view);
        //         markManyController.MarkManyView.Controller = markManyController;
        //         return markManyController;
        //     });

        // TODO: might be able to make some of these register using
        // "open generics" to be more flexible.

#if DIZ_3_BRANCH
        serviceRegistry.Register(
            typeof(IDataController),
            typeof(RomByteDataBindingController <IGridRow <ByteEntry> >)
            );

        serviceRegistry.Register <IDataController, RomByteDataBindingGridController>();

        serviceRegistry.Register(
            typeof(IBytesGridDataController <,>),
            typeof(RomByteDataBindingController <>)
            );

        serviceRegistry.Register(
            typeof(IBytesGridDataController <IDataGridRow, ByteEntry>),
            typeof(RomByteDataBindingGridController)
            );

        serviceRegistry.Register <IStartFormController, StartFormController>();

        serviceRegistry.Register <IMainFormController, MainFormController>();

        serviceRegistry.Register <IProjectLoader, ProjectFileLoader>();
        serviceRegistry.Decorate(
            typeof(IProjectLoader),
            typeof(ProjectLoaderWithSampleDataDecorator));

        serviceRegistry.Register <IProjectsManager, ProjectsManager>();

        serviceRegistry.RegisterSingleton <ISampleProjectLoader, ProjectsManager>("SampleProjectLoader");
#endif
    }