Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DatastreamAnalysisOptimizerView.Designer.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DatastreamAnalysisOptimizerView.Designer.cs	(revision 14491)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DatastreamAnalysisOptimizerView.Designer.cs	(revision 14536)
@@ -30,5 +30,7 @@
       this.datastreamViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
       this.resultsTab = new System.Windows.Forms.TabPage();
-      this.resultsViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.resultsView = new HeuristicLab.Optimization.Views.ResultCollectionView();
+      this.runsTab = new System.Windows.Forms.TabPage();
+      this.runsView = new HeuristicLab.Optimization.Views.RunCollectionView();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.tabControl.SuspendLayout();
@@ -36,4 +38,5 @@
       this.datastreamTab.SuspendLayout();
       this.resultsTab.SuspendLayout();
+      this.runsTab.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -85,4 +88,5 @@
       this.tabControl.Controls.Add(this.datastreamTab);
       this.tabControl.Controls.Add(this.resultsTab);
+      this.tabControl.Controls.Add(this.runsTab);
       this.tabControl.Location = new System.Drawing.Point(3, 26);
       this.tabControl.Name = "tabControl";
@@ -103,5 +107,6 @@
       this.ensemblesTab.UseVisualStyleBackColor = true;
       this.ensemblesTab.DragDrop += new System.Windows.Forms.DragEventHandler(this.ensemblesTab_DragDrop);
-      this.ensemblesTab.DragEnter += new System.Windows.Forms.DragEventHandler(this.ensemblesTab_DragEnter);
+      this.ensemblesTab.DragEnter += new System.Windows.Forms.DragEventHandler(this.ensemblesTab_DragEnterOver);
+      this.ensemblesTab.DragOver += new System.Windows.Forms.DragEventHandler(this.ensemblesTab_DragEnterOver);
       // 
       // ensemblesViewHost
@@ -133,5 +138,6 @@
       this.datastreamTab.UseVisualStyleBackColor = true;
       this.datastreamTab.DragDrop += new System.Windows.Forms.DragEventHandler(this.datastreamTab_DragDrop);
-      this.datastreamTab.DragEnter += new System.Windows.Forms.DragEventHandler(this.datastreamTab_DragEnter);
+      this.datastreamTab.DragEnter += new System.Windows.Forms.DragEventHandler(this.datastreamTab_DragEnterOver);
+      this.datastreamTab.DragOver += new System.Windows.Forms.DragEventHandler(this.datastreamTab_DragEnterOver);
       // 
       // datastreamViewHost
@@ -151,5 +157,5 @@
       // resultsTab
       // 
-      this.resultsTab.Controls.Add(this.resultsViewHost);
+      this.resultsTab.Controls.Add(this.resultsView);
       this.resultsTab.Location = new System.Drawing.Point(4, 22);
       this.resultsTab.Name = "resultsTab";
@@ -161,15 +167,38 @@
       // resultsViewHost
       // 
-      this.resultsViewHost.Caption = "View";
-      this.resultsViewHost.Content = null;
-      this.resultsViewHost.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.resultsViewHost.Enabled = false;
-      this.resultsViewHost.Location = new System.Drawing.Point(0, 0);
-      this.resultsViewHost.Name = "resultsViewHost";
-      this.resultsViewHost.ReadOnly = false;
-      this.resultsViewHost.Size = new System.Drawing.Size(950, 554);
-      this.resultsViewHost.TabIndex = 0;
-      this.resultsViewHost.ViewsLabelVisible = true;
-      this.resultsViewHost.ViewType = null;
+      this.resultsView.Caption = "View";
+      this.resultsView.Content = null;
+      this.resultsView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.resultsView.Enabled = false;
+      this.resultsView.Location = new System.Drawing.Point(0, 0);
+      this.resultsView.Name = "resultsViewHost";
+      this.resultsView.ReadOnly = false;
+      this.resultsView.Size = new System.Drawing.Size(950, 554);
+      this.resultsView.TabIndex = 0;
+      //
+      // runsTab
+      //
+      //this.runsTabPage.Controls.Add(this.storeAlgorithmInEachRunCheckBox);
+      this.runsTab.Controls.Add(this.runsView);
+      this.runsTab.Location = new System.Drawing.Point(4, 22);
+      this.runsTab.Name = "runsTabPage";
+      this.runsTab.Padding = new System.Windows.Forms.Padding(3);
+      this.runsTab.Size = new System.Drawing.Size(950, 554);
+      this.runsTab.TabIndex = 3;
+      this.runsTab.Text = "Runs";
+      this.runsTab.UseVisualStyleBackColor = true;
+      //
+      // runsView
+      //
+      this.runsView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+      | System.Windows.Forms.AnchorStyles.Left)
+      | System.Windows.Forms.AnchorStyles.Right)));
+      this.runsView.Caption = "RunCollection View";
+      this.runsView.Content = null;
+      this.runsView.Location = new System.Drawing.Point(0, 0);
+      this.runsView.Name = "runsView";
+      this.runsView.ReadOnly = false;
+      this.runsView.Size = new System.Drawing.Size(950, 554);
+      this.runsView.TabIndex = 0;
       // 
       // DatastreamAnalysisOptimizerView
@@ -206,8 +235,10 @@
     private System.Windows.Forms.TabPage ensemblesTab;
     private System.Windows.Forms.TabPage datastreamTab;
-    private System.Windows.Forms.TabPage resultsTab;
+    protected System.Windows.Forms.TabPage resultsTab;
+    protected System.Windows.Forms.TabPage runsTab;
     private MainForm.WindowsForms.ViewHost ensemblesViewHost;
     private MainForm.WindowsForms.ViewHost datastreamViewHost;
-    private MainForm.WindowsForms.ViewHost resultsViewHost;
+    protected HeuristicLab.Optimization.Views.ResultCollectionView resultsView;
+    protected HeuristicLab.Optimization.Views.RunCollectionView runsView;
   }
 }
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DatastreamAnalysisOptimizerView.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DatastreamAnalysisOptimizerView.cs	(revision 14491)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/DatastreamAnalysisOptimizerView.cs	(revision 14536)
@@ -1,3 +1,4 @@
 ﻿#region License Information
+
 /* HeuristicLab
  * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
@@ -18,8 +19,12 @@
  * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
  */
+
 #endregion
 
 using System;
+using System.Collections.Generic;
+using System.Linq;
 using System.Windows.Forms;
+using HeuristicLab.Core;
 using HeuristicLab.MainForm;
 using HeuristicLab.Optimization;
@@ -37,14 +42,64 @@
 
     public new DatastreamAnalysisOptimizer Content {
-      get { return (DatastreamAnalysisOptimizer)base.Content; }
+      get { return (DatastreamAnalysisOptimizer) base.Content; }
       set { base.Content = value; }
+    }
+
+    //protected override void Dispose(bool disposing) {
+    //  if (disposing) {
+    //    if (components != null) components.Dispose();
+    //  }
+    //  base.Dispose(disposing);
+    //}
+
+    protected override void OnInitialized(EventArgs e) {
+      // set order of tab pages according to z order.
+      // NOTE: this is required due to a bug in the VS designer.
+      List<Control> tabPages = new List<Control>();
+      for (int i = 0; i < tabControl.Controls.Count; i++) {
+        tabPages.Add(tabControl.Controls[i]);
+      }
+      tabControl.Controls.Clear();
+      foreach(Control control in tabPages)
+        tabControl.Controls.Add(control);
+
+      base.OnInitialized(e);
     }
 
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      if (Content == null)
-        return;
-
-      // TODO
+      if (Content == null) {
+        ensemblesViewHost.Content = null;
+        datastreamViewHost.Content = null;
+        resultsView.Content = null;
+        runsView.Content = null;
+      } else {
+        ensemblesViewHost.Content = Content.Ensembles;
+        datastreamViewHost.Content = Content.Datastream;
+        resultsView.Content = Content.Results.AsReadOnly();
+        runsView.Content = Content.Runs;
+      }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      resultsView.Enabled = Content != null;
+      runsView.Enabled = Content != null;
+    }
+
+    protected override void OnClosed(FormClosedEventArgs e) {
+      if ((Content != null) && (Content.ExecutionState == ExecutionState.Started)) {
+        //The content must be stopped if no other view showing the content is available
+        var optimizers =
+          MainFormManager.MainForm.Views.OfType<IContentView>()
+            .Where(v => v != this)
+            .Select(v => v.Content)
+            .OfType<IOptimizer>();
+        if (!optimizers.Contains(Content)) {
+          var nestedOptimizers = optimizers.SelectMany(opt => opt.NestedOptimizers);
+          if (!nestedOptimizers.Contains(Content)) Content.Stop();
+        }
+      }
+      base.OnClosed(e);
     }
 
@@ -52,17 +107,54 @@
       base.RegisterContentEvents();
 
-      // TODO
+      Content.EnsemblesChanged += new EventHandler(Content_EnsemblesChanged);
+      Content.DatastreamChanged += new EventHandler(Content_DatastreamChanged);
     }
 
     protected override void DeregisterContentEvents() {
+      Content.EnsemblesChanged -= new EventHandler(Content_EnsemblesChanged);
+      Content.DatastreamChanged -= new EventHandler(Content_DatastreamChanged);
+
       base.DeregisterContentEvents();
     }
 
+    #region
+    protected override void Content_Prepared(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Prepared), sender, e);
+      else {
+        base.Content_Prepared(sender,e);
+        resultsView.Content = Content.Results.AsReadOnly();
+      }
+    }
+
+    protected void Content_EnsemblesChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_EnsemblesChanged), sender, e);
+      else {
+        ensemblesViewHost.Content = Content.Ensembles;
+      }
+    }
+
+    protected void Content_DatastreamChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_DatastreamChanged), sender, e);
+      else {
+        if (datastreamViewHost.Content != null && Content.Datastream != null &&
+            datastreamViewHost.Content.GetType() != Content.Datastream.GetType())
+          datastreamViewHost.ViewType = null;
+        datastreamViewHost.Content = Content.Datastream;
+      }
+    }
+    #endregion
+
     #region event handlers
-
     private void ensemblesTab_DragDrop(object sender, DragEventArgs e) {
       if (e.Data.GetDataPresent(HeuristicLab.Common.Constants.DragDropDataFormat)) {
         try {
-          // TODO
+          var data = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
+          if (data is IRegressionEnsembleModel) {
+            data = (IRegressionEnsembleModel) data;
+            Content.Ensembles.Add((RegressionEnsembleModel) data);
+          }
         }
         catch (Exception ex) {
@@ -72,14 +164,18 @@
     }
 
-    private void ensemblesTab_DragEnter(object sender, DragEventArgs e) {
+    private void ensemblesTab_DragEnterOver(object sender, DragEventArgs e) {
       e.Effect = DragDropEffects.None;
-      if (!e.Data.GetDataPresent(HeuristicLab.Common.Constants.DragDropDataFormat))
+      if (ReadOnly || !e.Data.GetDataPresent(HeuristicLab.Common.Constants.DragDropDataFormat))
         return;
 
       var data = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
 
-      // TODO: check if data is taggedEnsembles-data
-      if(data is IRegressionEnsembleModel)
-        e.Effect = DragDropEffects.Copy;
+      if (data is IRegressionEnsembleModel) {
+        if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link; // ALT key
+        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move; // SHIFT key
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Copy)) e.Effect = DragDropEffects.Copy;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Move)) e.Effect = DragDropEffects.Move;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Link)) e.Effect = DragDropEffects.Link;
+      }
     }
 
@@ -87,5 +183,8 @@
       if (e.Data.GetDataPresent(HeuristicLab.Common.Constants.DragDropDataFormat)) {
         try {
-          // TODO
+          var data = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
+          if (data is IValueParameter) data = ((IValueParameter) data).Value;
+          if (data is IRegressionProblemData)
+            Content.Datastream.ProblemData = (RegressionProblemData) data;
         }
         catch (Exception ex) {
@@ -95,12 +194,19 @@
     }
 
-    private void datastreamTab_DragEnter(object sender, DragEventArgs e) {
+    private void datastreamTab_DragEnterOver(object sender, DragEventArgs e) {
       e.Effect = DragDropEffects.None;
-      if (!e.Data.GetDataPresent(HeuristicLab.Common.Constants.DragDropDataFormat))
+
+      if (ReadOnly || !e.Data.GetDataPresent(HeuristicLab.Common.Constants.DragDropDataFormat))
         return;
 
       var data = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
-      if (data is IRegressionProblemData)
-        e.Effect = DragDropEffects.Copy;
+      if (data is IValueParameter) data = ((IValueParameter) data).Value;
+      if (data is IRegressionProblemData) {
+        if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link; // ALT key
+        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move; // SHIFT key
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Copy)) e.Effect = DragDropEffects.Copy;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Move)) e.Effect = DragDropEffects.Move;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Link)) e.Effect = DragDropEffects.Link;
+      }
     }
 
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/HeuristicLab.DatastreamAnalysis.Views.csproj
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/HeuristicLab.DatastreamAnalysis.Views.csproj	(revision 14491)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/HeuristicLab.DatastreamAnalysis.Views.csproj	(revision 14536)
@@ -58,4 +58,8 @@
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core.Views-3.3.dll</HintPath>
     </Reference>
+    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="HeuristicLab.MainForm-3.3">
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
@@ -116,4 +120,9 @@
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="RegressionEnsembleModelView.resx">
+      <DependentUpon>RegressionEnsembleModelView.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Plugin.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Plugin.cs	(revision 14491)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Plugin.cs	(revision 14536)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.DatastreamAnalysis.Views {
-  [Plugin("HeuristicLab.DatastreamAnalysis.Views", "3.4.14.14488")]
+  [Plugin("HeuristicLab.DatastreamAnalysis.Views", "3.4.14.14491")]
   [PluginFile("HeuristicLab.DatastreamAnalysis.Views-3.4.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Properties/AssemblyInfo.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Properties/AssemblyInfo.cs	(revision 14491)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/Properties/AssemblyInfo.cs	(revision 14536)
@@ -54,3 +54,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.4.0.0")]
-[assembly: AssemblyFileVersion("3.4.14.14488")]
+[assembly: AssemblyFileVersion("3.4.14.14491")]
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/RegressionEnsembleModelView.Designer.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/RegressionEnsembleModelView.Designer.cs	(revision 14491)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/RegressionEnsembleModelView.Designer.cs	(revision 14536)
@@ -19,4 +19,8 @@
  */
 #endregion
+
+using HeuristicLab.Core.Views;
+using HeuristicLab.Problems.DataAnalysis;
+
 namespace HeuristicLab.DatastreamAnalysis.Views {
   partial class RegressionEnsembleModelView {
@@ -44,16 +48,51 @@
     /// </summary>
     private void InitializeComponent() {
+      this.modelsView = new HeuristicLab.DatastreamAnalysis.Views.RegressionEnsembleModelView.ModelsView();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.SuspendLayout();
-
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Size = new System.Drawing.Size(468, 20);
+      // 
+      // infoLabel
+      // 
+      this.infoLabel.Location = new System.Drawing.Point(532, 3);
+      // 
+      // modelsView
+      // 
+      this.modelsView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.modelsView.Caption = "Models View";
+      this.modelsView.Content = null;
+      this.modelsView.Location = new System.Drawing.Point(6, 35);
+      this.modelsView.Name = "modelsView";
+      this.modelsView.ReadOnly = false;
+      this.modelsView.ShowDetails = true;
+      this.modelsView.Size = new System.Drawing.Size(532, 383);
+      this.modelsView.TabIndex = 1;
       // 
       // RegressionEnsembleModelView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+      this.Controls.Add(this.modelsView);
       this.Name = "RegressionEnsembleModelView";
+      this.Size = new System.Drawing.Size(551, 425);
+      this.Controls.SetChildIndex(this.modelsView, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.infoLabel, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.ResumeLayout(false);
+      this.PerformLayout();
+
     }
 
     #endregion
+
+    private ModelsView modelsView;
   }
 }
Index: branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/RegressionEnsembleModelView.cs
===================================================================
--- branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/RegressionEnsembleModelView.cs	(revision 14491)
+++ branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis.Views/3.4/RegressionEnsembleModelView.cs	(revision 14536)
@@ -34,12 +34,15 @@
   [Content(typeof(RegressionEnsembleModel), true)]
   internal sealed partial class RegressionEnsembleModelView : NamedItemView {
-    private ModelsView view;
-    private ItemCollection<IRegressionModel> models;
+    //private ItemCollectionView<IRegressionModel> view;
+    private ItemCollection<IRegressionModel> models = new ItemCollection<IRegressionModel>();
 
     public RegressionEnsembleModelView() {
       InitializeComponent();
-      view = new ModelsView();
-      view.Dock = DockStyle.Fill;
-      Controls.Add(view);
+      models = new ItemCollection<IRegressionModel>();
+
+      models.ItemsAdded += Models_ItemsAdded;
+      models.ItemsRemoved += Models_ItemsRemoved;
+      models.CollectionReset += Models_CollectionReset;
+
     }
 
@@ -49,77 +52,100 @@
     }
 
-
-
+ 
     protected override void OnContentChanged() {
       base.OnContentChanged();
       if (Content != null) {
-         models = new ItemCollection<IRegressionModel>(Content.Models);
-        view.Content = models;
+        models.ItemsAdded -= Models_ItemsAdded;
+        models.ItemsRemoved -= Models_ItemsRemoved;
+        models.CollectionReset -= Models_CollectionReset;
+
+        models.Clear();
+        models.AddRange(Content.Models);
+        modelsView.Content = models;
+
+        models.ItemsAdded += Models_ItemsAdded;
+        models.ItemsRemoved += Models_ItemsRemoved;
+        models.CollectionReset += Models_CollectionReset;
       } else {
-        view.Content = null;
+        modelsView.Content = null;
       }
     }
 
+    private void Models_CollectionReset(object sender, Collections.CollectionItemsChangedEventArgs<IRegressionModel> e) {
+      Content = null;
+    }
+
+    private void Models_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<IRegressionModel> e) {
+      Content.AddRange(e.Items);
+    }
+
+    private void Models_ItemsRemoved(object sender, Collections.CollectionItemsChangedEventArgs<IRegressionModel> e) {
+      Content.RemoveRange(e.Items);
+    }
+
     private class ModelsView : ItemCollectionView<IRegressionModel> {
-      protected override void SetEnabledStateOfControls() {
-        base.SetEnabledStateOfControls();
-        addButton.Enabled = false;
-        removeButton.Enabled = Content != null && !Content.IsReadOnly && !Locked && !ReadOnly && itemsListView.SelectedItems.Count > 0;
-        itemsListView.Enabled = Content != null && !Locked;
-        detailsGroupBox.Enabled = Content != null && itemsListView.SelectedItems.Count == 1;
-        sortAscendingButton.Enabled = false;
-        sortDescendingButton.Enabled = false;
+      public ModelsView() : base() {
       }
+    }
 
-      protected override void SortItemsListView(SortOrder sortOrder) { }
+    //private class ModelsView : ItemCollectionView<IRegressionModel> {
+    //  protected override void SetEnabledStateOfControls() {
+    //    base.SetEnabledStateOfControls();
+    //    addButton.Enabled = false;
+    //    removeButton.Enabled = Content != null && !Content.IsReadOnly && !Locked && !ReadOnly && itemsListView.SelectedItems.Count > 0;
+    //    itemsListView.Enabled = Content != null && !Locked;
+    //    detailsGroupBox.Enabled = Content != null && itemsListView.SelectedItems.Count == 1;
+    //    sortAscendingButton.Enabled = false;
+    //    sortDescendingButton.Enabled = false;
+    //  }
+
+    //  protected override void SortItemsListView(SortOrder sortOrder) { }
 
 
-      protected override void itemsListView_DragEnter(object sender, DragEventArgs e) {
-        validDragOperation = false;
-        if (ReadOnly || Locked) return;
-        if (Content.IsReadOnly) return;
+    //  protected override void itemsListView_DragEnter(object sender, DragEventArgs e) {
+    //    validDragOperation = false;
+    //    if (ReadOnly || Locked) return;
+    //    if (Content.IsReadOnly) return;
 
-        var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
-        validDragOperation = dropData.GetObjectGraphObjects().OfType<IRegressionModel>().Any();
-      }
-      protected override void itemsListView_DragDrop(object sender, DragEventArgs e) {
-        if (e.Effect != DragDropEffects.None) {
-          var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
-          var solutions = dropData.GetObjectGraphObjects().OfType<IRegressionModel>();
-          if (e.Effect.HasFlag(DragDropEffects.Copy)) {
-            Cloner cloner = new Cloner();
-            solutions = solutions.Select(s => cloner.Clone(s));
-          }
-          var solutionCollection = Content as ItemCollection<IRegressionModel>;
-          if (solutionCollection != null) {
-            solutionCollection.AddRange(solutions);
-          } else {
-            foreach (var solution in solutions)
-              Content.Add(solution);
-          }
-        }
-      }
-      protected override void itemsListView_KeyDown(object sender, KeyEventArgs e) {
-        var solutionCollection = Content as ItemCollection<IRegressionModel>;
-        if (e.KeyCode == Keys.Delete && solutionCollection != null) {
-          if ((itemsListView.SelectedItems.Count > 0) && !Content.IsReadOnly && !ReadOnly) {
-            solutionCollection.RemoveRange(itemsListView.SelectedItems.Cast<ListViewItem>().Select(x => (IRegressionModel)x.Tag));
-          }
-        } else {
-          base.itemsListView_KeyDown(sender, e);
-        }
-      }
-      protected override void removeButton_Click(object sender, EventArgs e) {
-        var solutionCollection = Content as ItemCollection<IRegressionModel>;
-        if (itemsListView.SelectedItems.Count > 0 && solutionCollection != null) {
-          solutionCollection.RemoveRange(itemsListView.SelectedItems.Cast<ListViewItem>().Select(x => (IRegressionModel)x.Tag));
-          itemsListView.SelectedItems.Clear();
-        } else {
-          base.removeButton_Click(sender, e);
-        }
-      }
-
-
-    }
+    //    var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
+    //    validDragOperation = dropData.GetObjectGraphObjects().OfType<IRegressionModel>().Any();
+    //  }
+    //  protected override void itemsListView_DragDrop(object sender, DragEventArgs e) {
+    //    if (e.Effect != DragDropEffects.None) {
+    //      var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
+    //      var solutions = dropData.GetObjectGraphObjects().OfType<IRegressionModel>();
+    //      if (e.Effect.HasFlag(DragDropEffects.Copy)) {
+    //        Cloner cloner = new Cloner();
+    //        solutions = solutions.Select(s => cloner.Clone(s));
+    //      }
+    //      var solutionCollection = Content as ItemCollection<IRegressionModel>;
+    //      if (solutionCollection != null) {
+    //        solutionCollection.AddRange(solutions);
+    //      } else {
+    //        foreach (var solution in solutions)
+    //          Content.Add(solution);
+    //      }
+    //    }
+    //  }
+    //  protected override void itemsListView_KeyDown(object sender, KeyEventArgs e) {
+    //    var solutionCollection = Content as ItemCollection<IRegressionModel>;
+    //    if (e.KeyCode == Keys.Delete && solutionCollection != null) {
+    //      if ((itemsListView.SelectedItems.Count > 0) && !Content.IsReadOnly && !ReadOnly) {
+    //        solutionCollection.RemoveRange(itemsListView.SelectedItems.Cast<ListViewItem>().Select(x => (IRegressionModel)x.Tag));
+    //      }
+    //    } else {
+    //      base.itemsListView_KeyDown(sender, e);
+    //    }
+    //  }
+    //  protected override void removeButton_Click(object sender, EventArgs e) {
+    //    var solutionCollection = Content as ItemCollection<IRegressionModel>;
+    //    if (itemsListView.SelectedItems.Count > 0 && solutionCollection != null) {
+    //      solutionCollection.RemoveRange(itemsListView.SelectedItems.Cast<ListViewItem>().Select(x => (IRegressionModel)x.Tag));
+    //      itemsListView.SelectedItems.Clear();
+    //    } else {
+    //      base.removeButton_Click(sender, e);
+    //    }
+    //  }
+    //}
 
   }
