public Model( ProgramInfoViewModel programInfoVM, 
               InstalledProgramViewModel installedProgramVM,
               IFactory<SemiautomaticSync.Model, SemiautomaticSync.IModelParameters> semiautoSyncModelFactory )
 {
     Initialize( programInfoVM, installedProgramVM, semiautoSyncModelFactory );
     RegisterPropertyChangedEvents();
 }
 private void LoadInstalledPrograms()
 {
     var installedProgramVMs = new List<InstalledProgramViewModel>();
     var installedPrograms = this._installedProgramsScanner.GetInstalledPrograms();
     foreach ( var installedProgram in installedPrograms )
     {
         var installedProgramVM = new InstalledProgramViewModel( installedProgram );
         installedProgramVMs.Add( installedProgramVM );
     }
     this.InstalledProgramVMs = installedProgramVMs;
 }
        private void Initialize( ProgramInfoViewModel programInfoVM, 
                                 InstalledProgramViewModel installedProgramVM, 
                                 IFactory<SemiautomaticSync.Model, SemiautomaticSync.IModelParameters> semiautoSyncModelFactory )
        {
            this._installedProgramVM = installedProgramVM;
            this._programInfoVM = programInfoVM;

            var fully = this.CreateFullyAutoSyncModelCtorParams();
            this.FullyAutoSyncModel = new FullyAutomaticSync.Model( fully );
            var semi = this.CreateSemiautoSyncModelParams();
            this.SemiautomaticSyncModel = semiautoSyncModelFactory.Get( semi );
        }