Index: /stable/HeuristicLab.Optimization.Views/3.3/ProblemView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Optimization.Views/3.3/ProblemView.Designer.cs	(revision 10020)
+++ /stable/HeuristicLab.Optimization.Views/3.3/ProblemView.Designer.cs	(revision 10021)
@@ -46,5 +46,7 @@
     private void InitializeComponent() {
       this.problemInstanceSplitContainer = new System.Windows.Forms.SplitContainer();
-      this.ProblemInstanceConsumerViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.libraryLabel = new System.Windows.Forms.Label();
+      this.problemInstanceProviderComboBox = new System.Windows.Forms.ComboBox();
+      this.problemInstanceProviderViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       ((System.ComponentModel.ISupportInitialize)(this.problemInstanceSplitContainer)).BeginInit();
@@ -87,5 +89,7 @@
       // problemInstanceSplitContainer.Panel1
       // 
-      this.problemInstanceSplitContainer.Panel1.Controls.Add(this.ProblemInstanceConsumerViewHost);
+      this.problemInstanceSplitContainer.Panel1.Controls.Add(this.libraryLabel);
+      this.problemInstanceSplitContainer.Panel1.Controls.Add(this.problemInstanceProviderComboBox);
+      this.problemInstanceSplitContainer.Panel1.Controls.Add(this.problemInstanceProviderViewHost);
       this.problemInstanceSplitContainer.Panel1MinSize = 10;
       // 
@@ -100,23 +104,41 @@
       this.problemInstanceSplitContainer.TabIndex = 13;
       // 
-      // ProblemInstanceConsumerViewHost
+      // libraryLabel
       // 
-      this.ProblemInstanceConsumerViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+      this.libraryLabel.AutoSize = true;
+      this.libraryLabel.Location = new System.Drawing.Point(3, 6);
+      this.libraryLabel.Name = "libraryLabel";
+      this.libraryLabel.Size = new System.Drawing.Size(41, 13);
+      this.libraryLabel.TabIndex = 17;
+      this.libraryLabel.Text = "Library:";
+      // 
+      // problemInstanceProviderComboBox
+      // 
+      this.problemInstanceProviderComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.problemInstanceProviderComboBox.FormattingEnabled = true;
+      this.problemInstanceProviderComboBox.Location = new System.Drawing.Point(50, 2);
+      this.problemInstanceProviderComboBox.Name = "problemInstanceProviderComboBox";
+      this.problemInstanceProviderComboBox.Size = new System.Drawing.Size(208, 21);
+      this.problemInstanceProviderComboBox.TabIndex = 18;
+      this.problemInstanceProviderComboBox.SelectedIndexChanged += new System.EventHandler(this.problemInstanceProviderComboBox_SelectedIndexChanged);
+      // 
+      // problemInstanceProviderViewHost
+      // 
+      this.problemInstanceProviderViewHost.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.ProblemInstanceConsumerViewHost.Caption = "ProblemInstanceConsumerView";
-      this.ProblemInstanceConsumerViewHost.Content = null;
-      this.ProblemInstanceConsumerViewHost.Enabled = false;
-      this.ProblemInstanceConsumerViewHost.Location = new System.Drawing.Point(0, 1);
-      this.ProblemInstanceConsumerViewHost.Name = "ProblemInstanceConsumerViewHost";
-      this.ProblemInstanceConsumerViewHost.ReadOnly = false;
-      this.ProblemInstanceConsumerViewHost.Size = new System.Drawing.Size(511, 23);
-      this.ProblemInstanceConsumerViewHost.TabIndex = 0;
-      this.ProblemInstanceConsumerViewHost.ViewsLabelVisible = false;
-      this.ProblemInstanceConsumerViewHost.ViewType = null;
+      this.problemInstanceProviderViewHost.Caption = "ProblemInstanceConsumerView";
+      this.problemInstanceProviderViewHost.Content = null;
+      this.problemInstanceProviderViewHost.Enabled = false;
+      this.problemInstanceProviderViewHost.Location = new System.Drawing.Point(264, 1);
+      this.problemInstanceProviderViewHost.Name = "problemInstanceProviderViewHost";
+      this.problemInstanceProviderViewHost.ReadOnly = false;
+      this.problemInstanceProviderViewHost.Size = new System.Drawing.Size(247, 23);
+      this.problemInstanceProviderViewHost.TabIndex = 0;
+      this.problemInstanceProviderViewHost.ViewsLabelVisible = false;
+      this.problemInstanceProviderViewHost.ViewType = null;
       // 
       // ProblemView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.Controls.Add(this.problemInstanceSplitContainer);
@@ -125,4 +147,5 @@
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.problemInstanceSplitContainer.Panel1.ResumeLayout(false);
+      this.problemInstanceSplitContainer.Panel1.PerformLayout();
       this.problemInstanceSplitContainer.Panel2.ResumeLayout(false);
       this.problemInstanceSplitContainer.Panel2.PerformLayout();
@@ -136,5 +159,7 @@
 
     protected System.Windows.Forms.SplitContainer problemInstanceSplitContainer;
-    protected HeuristicLab.MainForm.WindowsForms.ViewHost ProblemInstanceConsumerViewHost;
+    protected HeuristicLab.MainForm.WindowsForms.ViewHost problemInstanceProviderViewHost;
+    protected System.Windows.Forms.Label libraryLabel;
+    protected System.Windows.Forms.ComboBox problemInstanceProviderComboBox;
   }
 }
Index: /stable/HeuristicLab.Optimization.Views/3.3/ProblemView.cs
===================================================================
--- /stable/HeuristicLab.Optimization.Views/3.3/ProblemView.cs	(revision 10020)
+++ /stable/HeuristicLab.Optimization.Views/3.3/ProblemView.cs	(revision 10021)
@@ -23,5 +23,4 @@
 using System.Collections.Generic;
 using System.Linq;
-using System.Windows.Forms;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
@@ -37,10 +36,15 @@
   public partial class ProblemView : ParameterizedNamedItemView {
 
-    private static Type neededViewType = typeof(ProblemInstanceConsumerView);
-
     public new IProblem Content {
       get { return (IProblem)base.Content; }
       set { base.Content = value; }
     }
+
+    protected IEnumerable<IProblemInstanceProvider> problemInstanceProviders;
+    public IEnumerable<IProblemInstanceProvider> ProblemInstanceProviders {
+      get { return new List<IProblemInstanceProvider>(problemInstanceProviders); }
+    }
+
+    public IProblemInstanceProvider SelectedProvider { get; protected set; }
 
     /// <summary>
@@ -53,19 +57,69 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      IProblemInstanceConsumer consumer = Content as IProblemInstanceConsumer;
-      if (consumer != null) {
-        IEnumerable<Type> viewTypes = MainFormManager.GetViewTypes(consumer.GetType(), true);
-        Type genericView = viewTypes.Where(x => x.IsSubclassOf(neededViewType)).First();
-        ProblemInstanceConsumerViewHost.Content = null; //necessary to enable the change of the ViewType
-        ProblemInstanceConsumerViewHost.ViewType = genericView;
-        ProblemInstanceConsumerViewHost.Content = consumer;
-        ProblemInstanceConsumerView view = (ProblemInstanceConsumerView)ProblemInstanceConsumerViewHost.ActiveView;
-        problemInstanceSplitContainer.Panel1Collapsed = !view.ProblemInstanceProviders.Any();
+      if (Content == null) {
+        problemInstanceProviders = null;
+        problemInstanceProviderComboBox.DataSource = null;
+        problemInstanceSplitContainer.Panel1Collapsed = true;
       } else {
-        problemInstanceSplitContainer.Panel1Collapsed = true;
+        var consumer = Content as IProblemInstanceConsumer;
+        if (consumer != null) {
+          problemInstanceProviders = ProblemInstanceManager.GetProviders(Content);
+          bool expand = problemInstanceProviders.Any();
+          if (expand) {
+            problemInstanceProviderComboBox.DisplayMember = "Name";
+            problemInstanceProviderComboBox.DataSource = ProblemInstanceProviders.OrderBy(x => x.Name).ToList();
+          }
+          problemInstanceSplitContainer.Panel1Collapsed = !expand;
+        } else
+          problemInstanceSplitContainer.Panel1Collapsed = true;
       }
       SetEnabledStateOfControls();
     }
 
+    protected virtual void problemInstanceProviderComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
+      if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
+        SelectedProvider = (IProblemInstanceProvider)problemInstanceProviderComboBox.SelectedItem;
+        problemInstanceProviderViewHost.Content = SelectedProvider;
+        var view = (ProblemInstanceProviderView)problemInstanceProviderViewHost.ActiveView;
+        var consumer = (IProblemInstanceConsumer)Content;
+        view.Consumer = consumer;
+        if (CheckForIProblemInstanceExporter(consumer))
+          view.Exporter = (IProblemInstanceExporter)Content;
+        else view.Exporter = null;
+        SetTooltip();
+      } else {
+        SelectedProvider = null;
+      }
+      SetEnabledStateOfControls();
+    }
+
+    protected bool CheckForIProblemInstanceExporter(IProblemInstanceConsumer content) {
+      return Content.GetType().GetInterfaces()
+                    .Any(x => x == typeof(IProblemInstanceExporter));
+    }
+
+    #region ToolTip
+    protected void SetTooltip() {
+      toolTip.SetToolTip(problemInstanceProviderComboBox, GetProviderToolTip());
+    }
+
+    private string GetProviderToolTip() {
+      var provider = SelectedProvider;
+      string toolTip = provider.Name;
+
+      if (!String.IsNullOrEmpty(provider.ReferencePublication)) {
+        toolTip = toolTip
+            + Environment.NewLine + Environment.NewLine
+            + provider.ReferencePublication;
+      }
+      if (provider.WebLink != null) {
+        toolTip = toolTip
+            + Environment.NewLine
+            + provider.WebLink.ToString();
+      }
+
+      return toolTip;
+    }
+    #endregion
   }
 }
Index: able/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.Designer.cs	(revision 10020)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
-  partial class ClassificationInstanceConsumerView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-    }
-
-    #endregion
-  }
-}
Index: able/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceConsumerView.cs	(revision 10020)
+++ 	(revision )
@@ -1,68 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.IO;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.Problems.DataAnalysis;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
-  [View("Classification InstanceProvider View")]
-  [Content(typeof(IProblemInstanceConsumer<IClassificationProblemData>), IsDefaultView = true)]
-  public partial class ClassificationInstanceConsumerView : DataAnalysisInstanceConsumerView<IClassificationProblemData> {
-    public new IProblemInstanceConsumer<IClassificationProblemData> Content {
-      get { return (IProblemInstanceConsumer<IClassificationProblemData>)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public ClassificationInstanceConsumerView() {
-      InitializeComponent();
-    }
-
-    protected override void importButton_Click(object sender, EventArgs e) {
-      var provider = SelectedProvider as ClassificationInstanceProvider;
-      if (provider != null) {
-        ClassificationImportTypeDialog importTypeDialog = new ClassificationImportTypeDialog();
-        if (importTypeDialog.ShowDialog() == DialogResult.OK) {
-          IClassificationProblemData instance = null;
-          try {
-            instance = provider.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
-          }
-          catch (IOException ex) {
-            ErrorWhileParsing(ex);
-            return;
-          }
-          try {
-            GenericConsumer.Load(instance);
-          }
-          catch (IOException ex) {
-            ErrorWhileLoading(ex, importTypeDialog.Path);
-          }
-        } else {
-          return;
-        }
-      } else {
-        base.importButton_Click(sender, e);
-      }
-    }
-  }
-}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceProviderView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceProviderView.Designer.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceProviderView.Designer.cs	(revision 10021)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  partial class ClassificationInstanceProviderView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+    }
+
+    #endregion
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceProviderView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceProviderView.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClassificationInstanceProviderView.cs	(revision 10021)
@@ -0,0 +1,61 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  [View("Classification InstanceProvider View")]
+  [Content(typeof(ClassificationInstanceProvider), IsDefaultView = true)]
+  public partial class ClassificationInstanceProviderView : DataAnalysisInstanceProviderView<IClassificationProblemData> {
+
+    public new ClassificationInstanceProvider Content {
+      get { return (ClassificationInstanceProvider)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public ClassificationInstanceProviderView() {
+      InitializeComponent();
+    }
+
+    protected override void importButton_Click(object sender, EventArgs e) {
+      var importTypeDialog = new ClassificationImportTypeDialog();
+      if (importTypeDialog.ShowDialog() == DialogResult.OK) {
+        IClassificationProblemData instance = null;
+        try {
+          instance = Content.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
+        } catch (IOException ex) {
+          ErrorWhileParsing(ex);
+          return;
+        }
+        try {
+          GenericConsumer.Load(instance);
+          instancesComboBox.SelectedIndex = -1;
+        } catch (IOException ex) {
+          ErrorWhileLoading(ex, importTypeDialog.Path);
+        }
+      }
+    }
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClusteringInstanceProviderView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClusteringInstanceProviderView.Designer.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClusteringInstanceProviderView.Designer.cs	(revision 10021)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  partial class ClusteringInstanceProviderView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+    }
+
+    #endregion
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClusteringInstanceProviderView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClusteringInstanceProviderView.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/ClusteringInstanceProviderView.cs	(revision 10021)
@@ -0,0 +1,61 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  [View("Clustering InstanceProvider View")]
+  [Content(typeof(ClusteringInstanceProvider), IsDefaultView = true)]
+  public partial class ClusteringInstanceProviderView : DataAnalysisInstanceProviderView<IClusteringProblemData> {
+
+    public new ClusteringInstanceProvider Content {
+      get { return (ClusteringInstanceProvider)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public ClusteringInstanceProviderView() {
+      InitializeComponent();
+    }
+
+    protected override void importButton_Click(object sender, EventArgs e) {
+      var importTypeDialog = new DataAnalysisImportTypeDialog();
+      if (importTypeDialog.ShowDialog() == DialogResult.OK) {
+        IClusteringProblemData instance = null;
+        try {
+          instance = Content.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
+        } catch (IOException ex) {
+          ErrorWhileParsing(ex);
+          return;
+        }
+        try {
+          GenericConsumer.Load(instance);
+          instancesComboBox.SelectedIndex = -1;
+        } catch (IOException ex) {
+          ErrorWhileLoading(ex, importTypeDialog.Path);
+        }
+      }
+    }
+  }
+}
Index: able/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceConsumerView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceConsumerView.Designer.cs	(revision 10020)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
-  partial class DataAnalysisInstanceConsumerView<T> {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-    }
-
-    #endregion
-  }
-}
Index: able/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceConsumerView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceConsumerView.cs	(revision 10020)
+++ 	(revision )
@@ -1,78 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.IO;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.Problems.DataAnalysis;
-using HeuristicLab.Problems.Instances.Views;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
-  [View("DataAnalysis InstanceProvider View")]
-  [Content(typeof(IProblemInstanceConsumer<IDataAnalysisProblemData>), IsDefaultView = true)]
-  [Content(typeof(IProblemInstanceConsumer<IClusteringProblemData>), IsDefaultView = true)]
-  public partial class DataAnalysisInstanceConsumerView<T> : ProblemInstanceConsumerViewGeneric<T>
-    where T : class, IDataAnalysisProblemData {
-    public new IProblemInstanceConsumer<T> Content {
-      get { return (IProblemInstanceConsumer<T>)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public DataAnalysisInstanceConsumerView() {
-      InitializeComponent();
-    }
-
-    protected override void importButton_Click(object sender, EventArgs e) {
-      var provider = SelectedProvider as DataAnalysisInstanceProvider<T, DataAnalysisImportType>;
-      if (provider != null) {
-        DataAnalysisImportTypeDialog importTypeDialog = new DataAnalysisImportTypeDialog();
-        if (importTypeDialog.ShowDialog() == DialogResult.OK) {
-          T instance = default(T);
-          try {
-            instance = provider.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
-          }
-          catch (IOException ex) {
-            ErrorWhileParsing(ex);
-            return;
-          }
-          try {
-            GenericConsumer.Load(instance);
-          }
-          catch (IOException ex) {
-            ErrorWhileLoading(ex, importTypeDialog.Path);
-          }
-        } else {
-          return;
-        }
-      } else {
-        base.importButton_Click(sender, e);
-      }
-    }
-
-    protected void ErrorWhileParsing(Exception ex) {
-      MessageBox.Show(String.Format("There was an error parsing the file: {0}", Environment.NewLine + ex.Message), "Error while parsing", MessageBoxButtons.OK, MessageBoxIcon.Error);
-    }
-    protected void ErrorWhileLoading(Exception ex, string path) {
-      MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(path), Environment.NewLine + ex.Message), "Cannot load instance");
-    }
-  }
-}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceProviderView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceProviderView.Designer.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceProviderView.Designer.cs	(revision 10021)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  partial class DataAnalysisInstanceProviderView<T> {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+    }
+
+    #endregion
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceProviderView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceProviderView.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/DataAnalysisInstanceProviderView.cs	(revision 10021)
@@ -0,0 +1,69 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.Instances.Views;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  [View("DataAnalysis InstanceProvider View")]
+  public partial class DataAnalysisInstanceProviderView<T> : ProblemInstanceProviderView<T>
+    where T : class, IDataAnalysisProblemData {
+
+    public DataAnalysisInstanceProviderView() {
+      InitializeComponent();
+    }
+
+    protected override void importButton_Click(object sender, EventArgs e) {
+      var provider = Content as DataAnalysisInstanceProvider<T, DataAnalysisImportType>;
+      if (provider != null) {
+        var importTypeDialog = new DataAnalysisImportTypeDialog();
+        if (importTypeDialog.ShowDialog() == DialogResult.OK) {
+          T instance = default(T);
+          try {
+            instance = provider.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
+          } catch (IOException ex) {
+            ErrorWhileParsing(ex);
+            return;
+          }
+          try {
+            GenericConsumer.Load(instance);
+            instancesComboBox.SelectedIndex = -1;
+          } catch (IOException ex) {
+            ErrorWhileLoading(ex, importTypeDialog.Path);
+          }
+        }
+      } else {
+        base.importButton_Click(sender, e);
+      }
+    }
+
+    protected void ErrorWhileParsing(Exception ex) {
+      MessageBox.Show(String.Format("There was an error parsing the file: {0}", Environment.NewLine + ex.Message), "Error while parsing", MessageBoxButtons.OK, MessageBoxIcon.Error);
+    }
+    protected void ErrorWhileLoading(Exception ex, string path) {
+      MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(path), Environment.NewLine + ex.Message), "Cannot load instance");
+    }
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3.csproj
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3.csproj	(revision 10020)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/HeuristicLab.Problems.Instances.DataAnalysis.Views-3.3.csproj	(revision 10021)
@@ -92,9 +92,15 @@
       <DependentUpon>ClassificationImportTypeDialog.cs</DependentUpon>
     </Compile>
-    <Compile Include="ClassificationInstanceConsumerView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ClassificationInstanceConsumerView.Designer.cs">
-      <DependentUpon>ClassificationInstanceConsumerView.cs</DependentUpon>
+    <Compile Include="ClassificationInstanceProviderView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ClassificationInstanceProviderView.Designer.cs">
+      <DependentUpon>ClassificationInstanceProviderView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ClusteringInstanceProviderView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ClusteringInstanceProviderView.Designer.cs">
+      <DependentUpon>ClusteringInstanceProviderView.cs</DependentUpon>
     </Compile>
     <Compile Include="TimeSeriesPrognosisImportTypeDialog.cs">
@@ -104,9 +110,9 @@
       <DependentUpon>TimeSeriesPrognosisImportTypeDialog.cs</DependentUpon>
     </Compile>
-    <Compile Include="TimeSeriesPrognosisInstanceConsumerView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="TimeSeriesPrognosisInstanceConsumerView.Designer.cs">
-      <DependentUpon>TimeSeriesPrognosisInstanceConsumerView.cs</DependentUpon>
+    <Compile Include="TimeSeriesPrognosisInstanceProviderView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="TimeSeriesPrognosisInstanceProviderView.Designer.cs">
+      <DependentUpon>TimeSeriesPrognosisInstanceProviderView.cs</DependentUpon>
     </Compile>
     <Compile Include="DataAnalysisImportTypeDialog.cs">
@@ -116,9 +122,9 @@
       <DependentUpon>DataAnalysisImportTypeDialog.cs</DependentUpon>
     </Compile>
-    <Compile Include="DataAnalysisInstanceConsumerView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="DataAnalysisInstanceConsumerView.Designer.cs">
-      <DependentUpon>DataAnalysisInstanceConsumerView.cs</DependentUpon>
+    <Compile Include="DataAnalysisInstanceProviderView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="DataAnalysisInstanceProviderView.Designer.cs">
+      <DependentUpon>DataAnalysisInstanceProviderView.cs</DependentUpon>
     </Compile>
     <Compile Include="Plugin.cs" />
@@ -129,9 +135,9 @@
       <DependentUpon>RegressionImportTypeDialog.cs</DependentUpon>
     </Compile>
-    <Compile Include="RegressionInstanceConsumerView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="RegressionInstanceConsumerView.Designer.cs">
-      <DependentUpon>RegressionInstanceConsumerView.cs</DependentUpon>
+    <Compile Include="RegressionInstanceProviderView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="RegressionInstanceProviderView.Designer.cs">
+      <DependentUpon>RegressionInstanceProviderView.cs</DependentUpon>
     </Compile>
     <None Include="HeuristicLab.snk" />
Index: able/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceConsumerView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceConsumerView.Designer.cs	(revision 10020)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
-  partial class RegressionInstanceConsumerView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-    }
-
-    #endregion
-  }
-}
Index: able/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceConsumerView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceConsumerView.cs	(revision 10020)
+++ 	(revision )
@@ -1,68 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.IO;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.Problems.DataAnalysis;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
-  [View("Regression InstanceProvider View")]
-  [Content(typeof(IProblemInstanceConsumer<IRegressionProblemData>), IsDefaultView = true)]
-  public partial class RegressionInstanceConsumerView : DataAnalysisInstanceConsumerView<IRegressionProblemData> {
-    public new IProblemInstanceConsumer<IRegressionProblemData> Content {
-      get { return (IProblemInstanceConsumer<IRegressionProblemData>)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public RegressionInstanceConsumerView() {
-      InitializeComponent();
-    }
-
-    protected override void importButton_Click(object sender, EventArgs e) {
-      var provider = SelectedProvider as RegressionInstanceProvider;
-      if (provider != null) {
-        RegressionImportTypeDialog importTypeDialog = new RegressionImportTypeDialog();
-        if (importTypeDialog.ShowDialog() == DialogResult.OK) {
-          IRegressionProblemData instance = null;
-          try {
-            instance = provider.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
-          }
-          catch (IOException ex) {
-            ErrorWhileParsing(ex);
-            return;
-          }
-          try {
-            GenericConsumer.Load(instance);
-          }
-          catch (IOException ex) {
-            ErrorWhileLoading(ex, importTypeDialog.Path);
-          }
-        } else {
-          return;
-        }
-      } else {
-        base.importButton_Click(sender, e);
-      }
-    }
-  }
-}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceProviderView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceProviderView.Designer.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceProviderView.Designer.cs	(revision 10021)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  partial class RegressionInstanceProviderView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+    }
+
+    #endregion
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceProviderView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceProviderView.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/RegressionInstanceProviderView.cs	(revision 10021)
@@ -0,0 +1,61 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  [View("Regression InstanceProvider View")]
+  [Content(typeof(RegressionInstanceProvider), IsDefaultView = true)]
+  public partial class RegressionInstanceProviderView : DataAnalysisInstanceProviderView<IRegressionProblemData> {
+
+    public new RegressionInstanceProvider Content {
+      get { return (RegressionInstanceProvider)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public RegressionInstanceProviderView() {
+      InitializeComponent();
+    }
+
+    protected override void importButton_Click(object sender, EventArgs e) {
+      var importTypeDialog = new RegressionImportTypeDialog();
+      if (importTypeDialog.ShowDialog() == DialogResult.OK) {
+        IRegressionProblemData instance = null;
+        try {
+          instance = Content.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
+        } catch (IOException ex) {
+          ErrorWhileParsing(ex);
+          return;
+        }
+        try {
+          GenericConsumer.Load(instance);
+          instancesComboBox.SelectedIndex = -1;
+        } catch (IOException ex) {
+          ErrorWhileLoading(ex, importTypeDialog.Path);
+        }
+      }
+    }
+  }
+}
Index: able/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceConsumerView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceConsumerView.Designer.cs	(revision 10020)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
-  partial class TimeSeriesPrognosisInstanceConsumerView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-    }
-
-    #endregion
-  }
-}
Index: able/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceConsumerView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceConsumerView.cs	(revision 10020)
+++ 	(revision )
@@ -1,68 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.IO;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.Problems.DataAnalysis;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
-  [View("TimeSeriesPrognosis InstanceProvider View")]
-  [Content(typeof(IProblemInstanceConsumer<ITimeSeriesPrognosisProblemData>), IsDefaultView = true)]
-  public partial class TimeSeriesPrognosisInstanceConsumerView : DataAnalysisInstanceConsumerView<ITimeSeriesPrognosisProblemData> {
-    public new IProblemInstanceConsumer<ITimeSeriesPrognosisProblemData> Content {
-      get { return (IProblemInstanceConsumer<ITimeSeriesPrognosisProblemData>)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public TimeSeriesPrognosisInstanceConsumerView() {
-      InitializeComponent();
-    }
-
-    protected override void importButton_Click(object sender, EventArgs e) {
-      var provider = SelectedProvider as TimeSeriesPrognosisInstanceProvider;
-      if (provider != null) {
-        TimeSeriesPrognosisImportTypeDialog importTypeDialog = new TimeSeriesPrognosisImportTypeDialog();
-        if (importTypeDialog.ShowDialog() == DialogResult.OK) {
-          ITimeSeriesPrognosisProblemData instance = null;
-          try {
-            instance = provider.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
-          }
-          catch (IOException ex) {
-            ErrorWhileParsing(ex);
-            return;
-          }
-          try {
-            GenericConsumer.Load(instance);
-          }
-          catch (IOException ex) {
-            ErrorWhileLoading(ex, importTypeDialog.Path);
-          }
-        } else {
-          return;
-        }
-      } else {
-        base.importButton_Click(sender, e);
-      }
-    }
-  }
-}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceProviderView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceProviderView.Designer.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceProviderView.Designer.cs	(revision 10021)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  partial class TimeSeriesPrognosisInstanceProviderView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+    }
+
+    #endregion
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceProviderView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceProviderView.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.DataAnalysis.Views/3.3/TimeSeriesPrognosisInstanceProviderView.cs	(revision 10021)
@@ -0,0 +1,61 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis.Views {
+  [View("TimeSeriesPrognosis InstanceProvider View")]
+  [Content(typeof(TimeSeriesPrognosisInstanceProvider), IsDefaultView = true)]
+  public partial class TimeSeriesPrognosisInstanceProviderView : DataAnalysisInstanceProviderView<ITimeSeriesPrognosisProblemData> {
+
+    public new TimeSeriesPrognosisInstanceProvider Content {
+      get { return (TimeSeriesPrognosisInstanceProvider)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public TimeSeriesPrognosisInstanceProviderView() {
+      InitializeComponent();
+    }
+
+    protected override void importButton_Click(object sender, EventArgs e) {
+      var importTypeDialog = new TimeSeriesPrognosisImportTypeDialog();
+      if (importTypeDialog.ShowDialog() == DialogResult.OK) {
+        ITimeSeriesPrognosisProblemData instance = null;
+        try {
+          instance = Content.ImportData(importTypeDialog.Path, importTypeDialog.ImportType, importTypeDialog.CSVFormat);
+        } catch (IOException ex) {
+          ErrorWhileParsing(ex);
+          return;
+        }
+        try {
+          GenericConsumer.Load(instance);
+          instancesComboBox.SelectedIndex = -1;
+        } catch (IOException ex) {
+          ErrorWhileLoading(ex, importTypeDialog.Path);
+        }
+      }
+    }
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.TSPLIB.Views/3.3/TSPLIBTSPInstanceProviderView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.TSPLIB.Views/3.3/TSPLIBTSPInstanceProviderView.cs	(revision 10020)
+++ /stable/HeuristicLab.Problems.Instances.TSPLIB.Views/3.3/TSPLIBTSPInstanceProviderView.cs	(revision 10021)
@@ -24,13 +24,12 @@
 using System.Windows.Forms;
 using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Problems.Instances.Views;
 
 namespace HeuristicLab.Problems.Instances.TSPLIB.Views {
   [View("TSPLIB TSP InstanceProvider View")]
-  [Content(typeof(IProblemInstanceConsumer<TSPData>), IsDefaultView = true)]
-  public partial class TSPLIBTSPInstanceProviderView : ProblemInstanceConsumerViewGeneric<TSPData> {
-    public new IProblemInstanceConsumer<TSPData> Content {
-      get { return (IProblemInstanceConsumer<TSPData>)base.Content; }
+  [Content(typeof(TSPLIBTSPInstanceProvider), IsDefaultView = true)]
+  public partial class TSPLIBTSPInstanceProviderView : ProblemInstanceProviderView<TSPData> {
+    public new TSPLIBTSPInstanceProvider Content {
+      get { return (TSPLIBTSPInstanceProvider)base.Content; }
       set { base.Content = value; }
     }
@@ -41,19 +40,14 @@
 
     protected override void importButton_Click(object sender, EventArgs e) {
-      TSPLIBTSPInstanceProvider provider = SelectedProvider as TSPLIBTSPInstanceProvider;
-      if (provider != null) {
-        using (var dialog = new TSPLIBImportDialog()) {
-          if (dialog.ShowDialog() == DialogResult.OK) {
-            var instance = provider.LoadData(dialog.TSPFileName, dialog.TourFileName, dialog.Quality);
-            try {
-              GenericConsumer.Load(instance);
-            }
-            catch (Exception ex) {
-              MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
-            }
+      using (var dialog = new TSPLIBImportDialog()) {
+        if (dialog.ShowDialog() == DialogResult.OK) {
+          var instance = Content.LoadData(dialog.TSPFileName, dialog.TourFileName, dialog.Quality);
+          try {
+            GenericConsumer.Load(instance);
+            instancesComboBox.SelectedIndex = -1;
+          } catch (Exception ex) {
+            MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
           }
         }
-      } else {
-        base.importButton_Click(sender, e);
       }
     }
Index: /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/HeuristicLab.Problems.Instances.VehicleRouting.Views-3.4.csproj
===================================================================
--- /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/HeuristicLab.Problems.Instances.VehicleRouting.Views-3.4.csproj	(revision 10020)
+++ /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/HeuristicLab.Problems.Instances.VehicleRouting.Views-3.4.csproj	(revision 10021)
@@ -115,9 +115,9 @@
     <Compile Include="Plugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="VRPInstanceConsumerView.cs">
+    <Compile Include="VRPInstanceProviderView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="VRPInstanceConsumerView.designer.cs">
-      <DependentUpon>VRPInstanceConsumerView.cs</DependentUpon>
+    <Compile Include="VRPInstanceProviderView.designer.cs">
+      <DependentUpon>VRPInstanceProviderView.cs</DependentUpon>
     </Compile>
     <Compile Include="VRPImportDialog.cs">
@@ -182,5 +182,5 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
-   <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
 set ProjectDir=$(ProjectDir)
 set SolutionDir=$(SolutionDir)
@@ -188,5 +188,5 @@
 
 call PreBuildEvent.cmd</PreBuildEvent>
-<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
 export ProjectDir=$(ProjectDir)
 export SolutionDir=$(SolutionDir)
Index: /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/Plugin.cs.frame
===================================================================
--- /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/Plugin.cs.frame	(revision 10020)
+++ /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/Plugin.cs.frame	(revision 10021)
@@ -27,5 +27,4 @@
   [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
   [PluginDependency("HeuristicLab.MainForm", "3.3")]
-  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
   [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
   [PluginDependency("HeuristicLab.Problems.Instances.VehicleRouting", "3.4")]
Index: able/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceConsumerView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceConsumerView.cs	(revision 10020)
+++ 	(revision )
@@ -1,87 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.IO;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.Problems.Instances.Views;
-
-namespace HeuristicLab.Problems.Instances.VehicleRouting.Views {
-  [View("VRP InstanceProvider View")]
-  [Content(typeof(IProblemInstanceConsumer<IVRPData>), IsDefaultView = true)]
-  public partial class VRPInstanceProviderView<T> : ProblemInstanceConsumerViewGeneric<T> where T : class, IVRPData {
-
-    public new IProblemInstanceConsumer<T> Content {
-      get { return (IProblemInstanceConsumer<T>)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public VRPInstanceProviderView() {
-      InitializeComponent();
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      problemInstanceProviderComboBox.Enabled = !ReadOnly && !Locked && Content != null && problemInstanceProviderComboBox.Items.Count > 0;
-      libraryInfoButton.Enabled = SelectedProvider != null && SelectedProvider.WebLink != null;
-      IVRPInstanceProvider provider = SelectedProvider as IVRPInstanceProvider;
-      importButton.Enabled = !ReadOnly && !Locked && Content != null && Consumer != null &&
-                             provider != null && provider.CanImportData;
-      ProviderImportSplitContainer.Panel2Collapsed = !importButton.Enabled;
-      exportButton.Enabled = !ReadOnly && !Locked && Content != null && Exporter != null &&
-                             provider != null && provider.CanExportData;
-      ProviderExportSplitContainer.Panel2Collapsed = !exportButton.Enabled;
-    }
-
-    protected override void importButton_Click(object sender, EventArgs e) {
-      IVRPInstanceProvider provider = SelectedProvider as IVRPInstanceProvider;
-      if (provider != null) {
-        using (var dialog = new VRPImportDialog(SelectedProvider.Name)) {
-          if (dialog.ShowDialog() == DialogResult.OK) {
-            var instance = provider.Import(dialog.VRPFileName, dialog.TourFileName);
-            try {
-              GenericConsumer.Load(instance as T);
-            }
-            catch (Exception ex) {
-              MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
-            }
-          }
-        }
-      }
-    }
-
-    protected override void exportButton_Click(object sender, EventArgs e) {
-      IVRPInstanceProvider provider = SelectedProvider as IVRPInstanceProvider;
-      if (provider != null) {
-        if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
-          try {
-            provider.Export(GenericExporter.Export(), saveFileDialog.FileName);
-          }
-          catch (Exception ex) {
-            ErrorHandling.ShowErrorDialog(this, ex);
-          }
-        }
-      }
-    }
-  }
-}
Index: able/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceConsumerView.designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceConsumerView.designer.cs	(revision 10020)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Problems.Instances.VehicleRouting.Views {
-  partial class VRPInstanceProviderView<T> {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-    }
-
-    #endregion
-  }
-}
Index: /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceProviderView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceProviderView.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceProviderView.cs	(revision 10021)
@@ -0,0 +1,68 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.IO;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.Instances.Views;
+
+namespace HeuristicLab.Problems.Instances.VehicleRouting.Views {
+  [View("VRP InstanceProvider View")]
+  [Content(typeof(IProblemInstanceProvider<IVRPData>), IsDefaultView = true)]
+  public partial class VRPInstanceProviderView<T> : ProblemInstanceProviderView<T> where T : class, IVRPData {
+
+    public VRPInstanceProviderView() {
+      InitializeComponent();
+    }
+
+    protected override void importButton_Click(object sender, EventArgs e) {
+      var provider = Content as IVRPInstanceProvider;
+      if (provider != null) {
+        using (var dialog = new VRPImportDialog(Content.Name)) {
+          if (dialog.ShowDialog() == DialogResult.OK) {
+            var instance = provider.Import(dialog.VRPFileName, dialog.TourFileName);
+            try {
+              GenericConsumer.Load(instance as T);
+              instancesComboBox.SelectedIndex = -1;
+            } catch (Exception ex) {
+              MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
+            }
+          }
+        }
+      }
+    }
+
+    protected override void exportButton_Click(object sender, EventArgs e) {
+      var provider = Content as IVRPInstanceProvider;
+      if (provider != null) {
+        if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
+          try {
+            provider.Export(GenericExporter.Export(), saveFileDialog.FileName);
+          } catch (Exception ex) {
+            ErrorHandling.ShowErrorDialog(this, ex);
+          }
+        }
+      }
+    }
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceProviderView.designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceProviderView.designer.cs	(revision 10021)
+++ /stable/HeuristicLab.Problems.Instances.VehicleRouting.Views/3.4/VRPInstanceProviderView.designer.cs	(revision 10021)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Problems.Instances.VehicleRouting.Views {
+  partial class VRPInstanceProviderView<T> {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+    }
+
+    #endregion
+  }
+}
Index: /stable/HeuristicLab.Problems.Instances.Views/3.3/HeuristicLab.Problems.Instances.Views-3.3.csproj
===================================================================
--- /stable/HeuristicLab.Problems.Instances.Views/3.3/HeuristicLab.Problems.Instances.Views-3.3.csproj	(revision 10020)
+++ /stable/HeuristicLab.Problems.Instances.Views/3.3/HeuristicLab.Problems.Instances.Views-3.3.csproj	(revision 10021)
@@ -113,17 +113,5 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="ProblemInstanceConsumerViewGeneric.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ProblemInstanceConsumerViewGeneric.Designer.cs">
-      <DependentUpon>ProblemInstanceConsumerViewGeneric.cs</DependentUpon>
-    </Compile>
     <Compile Include="Plugin.cs" />
-    <Compile Include="ProblemInstanceConsumerView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ProblemInstanceConsumerView.Designer.cs">
-      <DependentUpon>ProblemInstanceConsumerView.cs</DependentUpon>
-    </Compile>
     <Compile Include="ProblemInstanceProviderView.cs">
       <SubType>UserControl</SubType>
@@ -199,5 +187,5 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
-   <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
 set ProjectDir=$(ProjectDir)
 set SolutionDir=$(SolutionDir)
@@ -206,5 +194,5 @@
 call PreBuildEvent.cmd
 </PreBuildEvent>
-<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
 export ProjectDir=$(ProjectDir)
 export SolutionDir=$(SolutionDir)
Index: able/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.Designer.cs	(revision 10020)
+++ 	(revision )
@@ -1,65 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Problems.Instances.Views {
-  partial class ProblemInstanceConsumerView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.SuspendLayout();
-      // 
-      // ProblemInstanceConsumerView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.Name = "ProblemInstanceConsumerView";
-      this.Size = new System.Drawing.Size(694, 22);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.ToolTip toolTip;
-  }
-}
Index: able/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerView.cs	(revision 10020)
+++ 	(revision )
@@ -1,46 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System.Collections.Generic;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Problems.Instances.Views {
-  [View("ProblemInstanceConsumerView")]
-  [Content(typeof(IProblemInstanceConsumer), IsDefaultView = false)]
-  public partial class ProblemInstanceConsumerView : AsynchronousContentView {
-
-    public new IProblemInstanceConsumer Content {
-      get { return (IProblemInstanceConsumer)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected IEnumerable<IProblemInstanceProvider> problemInstanceProviders;
-    public IEnumerable<IProblemInstanceProvider> ProblemInstanceProviders {
-      get { return new List<IProblemInstanceProvider>(problemInstanceProviders); }
-    }
-
-    public ProblemInstanceConsumerView() {
-      InitializeComponent();
-    }
-  }
-}
Index: able/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerViewGeneric.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerViewGeneric.Designer.cs	(revision 10020)
+++ 	(revision )
@@ -1,220 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Problems.Instances.Views {
-  partial class ProblemInstanceConsumerViewGeneric<T> {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.problemInstanceProviderComboBox = new System.Windows.Forms.ComboBox();
-      this.libraryInfoButton = new System.Windows.Forms.Button();
-      this.libraryLabel = new System.Windows.Forms.Label();
-      this.problemInstanceProviderViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.importButton = new System.Windows.Forms.Button();
-      this.exportButton = new System.Windows.Forms.Button();
-      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
-      this.ProviderExportSplitContainer = new System.Windows.Forms.SplitContainer();
-      this.ProviderImportSplitContainer = new System.Windows.Forms.SplitContainer();
-      ((System.ComponentModel.ISupportInitialize)(this.ProviderExportSplitContainer)).BeginInit();
-      this.ProviderExportSplitContainer.Panel1.SuspendLayout();
-      this.ProviderExportSplitContainer.Panel2.SuspendLayout();
-      this.ProviderExportSplitContainer.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.ProviderImportSplitContainer)).BeginInit();
-      this.ProviderImportSplitContainer.Panel1.SuspendLayout();
-      this.ProviderImportSplitContainer.Panel2.SuspendLayout();
-      this.ProviderImportSplitContainer.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // problemInstanceProviderComboBox
-      // 
-      this.problemInstanceProviderComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.problemInstanceProviderComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.problemInstanceProviderComboBox.FormattingEnabled = true;
-      this.problemInstanceProviderComboBox.Location = new System.Drawing.Point(50, 1);
-      this.problemInstanceProviderComboBox.Name = "problemInstanceProviderComboBox";
-      this.problemInstanceProviderComboBox.Size = new System.Drawing.Size(174, 21);
-      this.problemInstanceProviderComboBox.TabIndex = 16;
-      this.problemInstanceProviderComboBox.SelectedIndexChanged += new System.EventHandler(this.problemInstanceProviderComboBox_SelectedIndexChanged);
-      // 
-      // libraryInfoButton
-      // 
-      this.libraryInfoButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.libraryInfoButton.Location = new System.Drawing.Point(230, -1);
-      this.libraryInfoButton.Name = "libraryInfoButton";
-      this.libraryInfoButton.Size = new System.Drawing.Size(24, 24);
-      this.libraryInfoButton.TabIndex = 17;
-      this.libraryInfoButton.Text = "Info";
-      this.libraryInfoButton.UseVisualStyleBackColor = true;
-      this.libraryInfoButton.Click += new System.EventHandler(this.libraryInfoButton_Click);
-      // 
-      // libraryLabel
-      // 
-      this.libraryLabel.AutoSize = true;
-      this.libraryLabel.Location = new System.Drawing.Point(3, 5);
-      this.libraryLabel.Name = "libraryLabel";
-      this.libraryLabel.Size = new System.Drawing.Size(41, 13);
-      this.libraryLabel.TabIndex = 15;
-      this.libraryLabel.Text = "Library:";
-      // 
-      // problemInstanceProviderViewHost
-      // 
-      this.problemInstanceProviderViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.problemInstanceProviderViewHost.Caption = "View";
-      this.problemInstanceProviderViewHost.Content = null;
-      this.problemInstanceProviderViewHost.Enabled = false;
-      this.problemInstanceProviderViewHost.Location = new System.Drawing.Point(318, 0);
-      this.problemInstanceProviderViewHost.Name = "problemInstanceProviderViewHost";
-      this.problemInstanceProviderViewHost.ReadOnly = false;
-      this.problemInstanceProviderViewHost.Size = new System.Drawing.Size(373, 22);
-      this.problemInstanceProviderViewHost.TabIndex = 15;
-      this.problemInstanceProviderViewHost.ViewsLabelVisible = false;
-      this.problemInstanceProviderViewHost.ViewType = null;
-      // 
-      // importButton
-      // 
-      this.importButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.importButton.Location = new System.Drawing.Point(1, -1);
-      this.importButton.Name = "importButton";
-      this.importButton.Size = new System.Drawing.Size(24, 24);
-      this.importButton.TabIndex = 18;
-      this.importButton.Text = "Import";
-      this.importButton.UseVisualStyleBackColor = true;
-      this.importButton.Click += new System.EventHandler(this.importButton_Click);
-      // 
-      // exportButton
-      // 
-      this.exportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.exportButton.Location = new System.Drawing.Point(1, -1);
-      this.exportButton.Name = "exportButton";
-      this.exportButton.Size = new System.Drawing.Size(24, 24);
-      this.exportButton.TabIndex = 19;
-      this.exportButton.Text = "Export";
-      this.exportButton.UseVisualStyleBackColor = true;
-      this.exportButton.Click += new System.EventHandler(this.exportButton_Click);
-      // 
-      // openFileDialog
-      // 
-      this.openFileDialog.Filter = "All files|*.*";
-      // 
-      // saveFileDialog
-      // 
-      this.saveFileDialog.Filter = "CSV files|*.csv|All files|*.*";
-      this.saveFileDialog.Title = "Save RegressionInstance...";
-      // 
-      // ProviderExportSplitContainer
-      // 
-      this.ProviderExportSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
-      this.ProviderExportSplitContainer.IsSplitterFixed = true;
-      this.ProviderExportSplitContainer.Location = new System.Drawing.Point(0, 0);
-      this.ProviderExportSplitContainer.Name = "ProviderExportSplitContainer";
-      // 
-      // ProviderExportSplitContainer.Panel1
-      // 
-      this.ProviderExportSplitContainer.Panel1.Controls.Add(this.ProviderImportSplitContainer);
-      // 
-      // ProviderExportSplitContainer.Panel2
-      // 
-      this.ProviderExportSplitContainer.Panel2.Controls.Add(this.exportButton);
-      this.ProviderExportSplitContainer.Size = new System.Drawing.Size(312, 22);
-      this.ProviderExportSplitContainer.SplitterDistance = 283;
-      this.ProviderExportSplitContainer.TabIndex = 20;
-      // 
-      // ProviderImportSplitContainer
-      // 
-      this.ProviderImportSplitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.ProviderImportSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
-      this.ProviderImportSplitContainer.IsSplitterFixed = true;
-      this.ProviderImportSplitContainer.Location = new System.Drawing.Point(0, 0);
-      this.ProviderImportSplitContainer.Name = "ProviderImportSplitContainer";
-      // 
-      // ProviderImportSplitContainer.Panel1
-      // 
-      this.ProviderImportSplitContainer.Panel1.Controls.Add(this.libraryLabel);
-      this.ProviderImportSplitContainer.Panel1.Controls.Add(this.problemInstanceProviderComboBox);
-      this.ProviderImportSplitContainer.Panel1.Controls.Add(this.libraryInfoButton);
-      // 
-      // ProviderImportSplitContainer.Panel2
-      // 
-      this.ProviderImportSplitContainer.Panel2.Controls.Add(this.importButton);
-      this.ProviderImportSplitContainer.Size = new System.Drawing.Size(282, 23);
-      this.ProviderImportSplitContainer.SplitterDistance = 253;
-      this.ProviderImportSplitContainer.TabIndex = 21;
-      // 
-      // ProblemInstanceConsumerViewGeneric
-      // 
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.Controls.Add(this.ProviderExportSplitContainer);
-      this.Controls.Add(this.problemInstanceProviderViewHost);
-      this.Name = "ProblemInstanceConsumerViewGeneric";
-      this.ProviderExportSplitContainer.Panel1.ResumeLayout(false);
-      this.ProviderExportSplitContainer.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.ProviderExportSplitContainer)).EndInit();
-      this.ProviderExportSplitContainer.ResumeLayout(false);
-      this.ProviderImportSplitContainer.Panel1.ResumeLayout(false);
-      this.ProviderImportSplitContainer.Panel1.PerformLayout();
-      this.ProviderImportSplitContainer.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.ProviderImportSplitContainer)).EndInit();
-      this.ProviderImportSplitContainer.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.ComboBox problemInstanceProviderComboBox;
-    protected System.Windows.Forms.Button libraryInfoButton;
-    protected System.Windows.Forms.Label libraryLabel;
-    protected MainForm.WindowsForms.ViewHost problemInstanceProviderViewHost;
-    protected System.Windows.Forms.ToolTip toolTip;
-    protected System.Windows.Forms.Button importButton;
-    protected System.Windows.Forms.Button exportButton;
-    protected System.Windows.Forms.SaveFileDialog saveFileDialog;
-    protected System.Windows.Forms.OpenFileDialog openFileDialog;
-    protected System.Windows.Forms.SplitContainer ProviderExportSplitContainer;
-    protected System.Windows.Forms.SplitContainer ProviderImportSplitContainer;
-  }
-}
Index: able/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerViewGeneric.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceConsumerViewGeneric.cs	(revision 10020)
+++ 	(revision )
@@ -1,202 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
-using HeuristicLab.Core;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Problems.Instances.Views {
-  [View("ProblemInstanceConsumerView")]
-  [Content(typeof(IProblemInstanceConsumer<>), IsDefaultView = false)]
-  public partial class ProblemInstanceConsumerViewGeneric<T> : ProblemInstanceConsumerView {
-
-    public new IProblemInstanceConsumer<T> Content {
-      get { return (IProblemInstanceConsumer<T>)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected IProblemInstanceProvider<T> GenericSelectedProvider { get { return SelectedProvider as IProblemInstanceProvider<T>; } }
-    public IProblemInstanceProvider SelectedProvider { get; protected set; }
-
-    #region Importer & Exporter
-    protected IProblemInstanceConsumer<T> GenericConsumer { get { return Consumer as IProblemInstanceConsumer<T>; } }
-    protected IProblemInstanceConsumer consumer;
-    public IProblemInstanceConsumer Consumer {
-      get { return consumer; }
-      set {
-        consumer = value;
-        SetEnabledStateOfControls();
-      }
-    }
-
-    protected IProblemInstanceExporter<T> GenericExporter { get { return Exporter as IProblemInstanceExporter<T>; } }
-    protected IProblemInstanceExporter exporter;
-    public IProblemInstanceExporter Exporter {
-      get { return exporter; }
-      set {
-        exporter = value;
-        SetEnabledStateOfControls();
-      }
-    }
-    #endregion
-
-    public ProblemInstanceConsumerViewGeneric() {
-      InitializeComponent();
-      importButton.Text = String.Empty;
-      importButton.Image = VSImageLibrary.Open;
-      exportButton.Text = String.Empty;
-      exportButton.Image = VSImageLibrary.SaveAs;
-      libraryInfoButton.Text = String.Empty;
-      libraryInfoButton.Image = VSImageLibrary.Help;
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        problemInstanceProviders = null;
-        problemInstanceProviderComboBox.DataSource = null;
-      } else {
-        problemInstanceProviderComboBox.DisplayMember = "Name";
-        problemInstanceProviders = ProblemInstanceManager.GetProviders(Content);
-        problemInstanceProviderComboBox.DataSource = ProblemInstanceProviders.OrderBy(x => x.Name).ToList();
-      }
-      SetEnabledStateOfControls();
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-      problemInstanceProviderComboBox.Enabled = !ReadOnly && !Locked && Content != null && problemInstanceProviderComboBox.Items.Count > 0;
-      libraryInfoButton.Enabled = SelectedProvider != null && SelectedProvider.WebLink != null;
-      importButton.Enabled = !ReadOnly && !Locked && Content != null && Consumer != null &&
-                             GenericSelectedProvider != null && GenericSelectedProvider.CanImportData;
-      ProviderImportSplitContainer.Panel2Collapsed = !importButton.Enabled;
-      exportButton.Enabled = !ReadOnly && !Locked && Content != null && Exporter != null &&
-                             GenericSelectedProvider != null && GenericSelectedProvider.CanExportData;
-      ProviderExportSplitContainer.Panel2Collapsed = !exportButton.Enabled;
-    }
-
-    protected virtual void problemInstanceProviderComboBox_SelectedIndexChanged(object sender, System.EventArgs e) {
-      if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
-        SelectedProvider = (IProblemInstanceProvider)problemInstanceProviderComboBox.SelectedItem;
-        problemInstanceProviderViewHost.Content = SelectedProvider;
-        ProblemInstanceProviderView view = (ProblemInstanceProviderView)problemInstanceProviderViewHost.ActiveView;
-        consumer = Content;
-        view.Consumer = Content;
-        if (CheckForIProblemInstanceExporter(Content)) {
-          exporter = (IProblemInstanceExporter)Content;
-        }
-        SetTooltip();
-      } else {
-        SelectedProvider = null;
-      }
-      SetEnabledStateOfControls();
-    }
-
-    protected bool CheckForIProblemInstanceExporter(IProblemInstanceConsumer content) {
-      return Content.GetType().GetInterfaces()
-                    .Any(x => x.Equals(typeof(IProblemInstanceExporter)));
-    }
-
-    private void libraryInfoButton_Click(object sender, EventArgs e) {
-      if (problemInstanceProviderComboBox.SelectedIndex >= 0) {
-        if (SelectedProvider != null && SelectedProvider.WebLink != null)
-          Process.Start(SelectedProvider.WebLink.ToString());
-      }
-    }
-
-    protected virtual void importButton_Click(object sender, EventArgs e) {
-      openFileDialog.FileName = GetProblemType() + " instance";
-      if (openFileDialog.ShowDialog() == DialogResult.OK) {
-        T instance = default(T);
-        try {
-          instance = GenericSelectedProvider.ImportData(openFileDialog.FileName);
-        }
-        catch (Exception ex) {
-          MessageBox.Show(String.Format("There was an error parsing the file: {0}", Environment.NewLine + ex.Message), "Error while parsing", MessageBoxButtons.OK, MessageBoxIcon.Error);
-          return;
-        }
-        try {
-          GenericConsumer.Load(instance);
-        }
-        catch (Exception ex) {
-          MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
-        }
-      }
-    }
-
-    protected virtual void exportButton_Click(object sender, EventArgs e) {
-      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
-        try {
-          GenericSelectedProvider.ExportData(GenericExporter.Export(), saveFileDialog.FileName);
-        }
-        catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(this, ex);
-        }
-      }
-    }
-
-    protected string GetProblemType() {
-      var item = Content as IItem;
-      if (item != null)
-        return item.ItemName;
-      return "problem";
-    }
-    protected string GetProviderFormatInfo() {
-      return SelectedProvider.Name;
-    }
-
-    #region ToolTip
-    protected void SetTooltip() {
-      toolTip.SetToolTip(problemInstanceProviderComboBox, GetProviderToolTip());
-      toolTip.SetToolTip(importButton, "Import a " + GetProblemType() + " from a file in the " + GetProviderFormatInfo() + " format.");
-      toolTip.SetToolTip(exportButton, "Export currently loaded " + GetProblemType() + " to a file in the " + GetProviderFormatInfo() + " format.");
-      if (SelectedProvider.WebLink != null)
-        toolTip.SetToolTip(libraryInfoButton, "Browse to " + SelectedProvider.WebLink.ToString());
-      else toolTip.SetToolTip(libraryInfoButton, "Library does not have a web reference.");
-    }
-
-    private string GetProviderToolTip() {
-      var provider = SelectedProvider;
-      string toolTip = provider.Name;
-
-      if (!String.IsNullOrEmpty(provider.ReferencePublication)) {
-        toolTip = toolTip
-            + Environment.NewLine + Environment.NewLine
-            + provider.ReferencePublication;
-      }
-      if (provider.WebLink != null) {
-        toolTip = toolTip
-            + Environment.NewLine
-            + provider.WebLink.ToString();
-      }
-
-      return toolTip;
-    }
-    #endregion
-  }
-}
Index: /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.cs	(revision 10020)
+++ /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.cs	(revision 10021)
@@ -21,4 +21,5 @@
 
 using System.Windows.Forms;
+using HeuristicLab.Core;
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
@@ -35,8 +36,20 @@
 
     public abstract IProblemInstanceConsumer Consumer { get; set; }
+    public abstract IProblemInstanceExporter Exporter { get; set; }
 
-    public ProblemInstanceProviderView() {
+    protected ProblemInstanceProviderView() {
       InitializeComponent();
     }
+
+    protected string GetProblemType() {
+      var item = Consumer as IItem;
+      return item != null ? item.ItemName : "problem";
+    }
+
+    protected string GetProviderFormatInfo() {
+      return Content != null ? Content.Name : string.Empty;
+    }
+
+    protected abstract void SetTooltip();
   }
 }
Index: /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.Designer.cs	(revision 10020)
+++ /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.Designer.cs	(revision 10021)
@@ -20,6 +20,7 @@
 #endregion
 
+
 namespace HeuristicLab.Problems.Instances.Views {
-  partial class ProblemInstanceProviderViewGeneric<T> {
+  partial class ProblemInstanceProviderView<T> {
     /// <summary> 
     /// Required designer variable.
@@ -45,19 +46,22 @@
     /// </summary>
     private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.instanceLabel = new System.Windows.Forms.Label();
       this.instancesComboBox = new System.Windows.Forms.ComboBox();
       this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
       this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
+      this.instanceLabel = new System.Windows.Forms.Label();
+      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+      this.exportButton = new System.Windows.Forms.Button();
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.importButton = new System.Windows.Forms.Button();
+      this.libraryInfoButton = new System.Windows.Forms.Button();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
       this.SuspendLayout();
-      // 
-      // instanceLabel
-      // 
-      this.instanceLabel.AutoSize = true;
-      this.instanceLabel.Location = new System.Drawing.Point(3, 4);
-      this.instanceLabel.Name = "instanceLabel";
-      this.instanceLabel.Size = new System.Drawing.Size(51, 13);
-      this.instanceLabel.TabIndex = 4;
-      this.instanceLabel.Text = "Instance:";
       // 
       // instancesComboBox
@@ -67,10 +71,10 @@
       this.instancesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
       this.instancesComboBox.FormattingEnabled = true;
-      this.instancesComboBox.Location = new System.Drawing.Point(60, 1);
+      this.instancesComboBox.Location = new System.Drawing.Point(60, 2);
       this.instancesComboBox.Name = "instancesComboBox";
-      this.instancesComboBox.Size = new System.Drawing.Size(632, 21);
+      this.instancesComboBox.Size = new System.Drawing.Size(540, 21);
       this.instancesComboBox.TabIndex = 7;
+      this.instancesComboBox.SelectionChangeCommitted += new System.EventHandler(this.instancesComboBox_SelectionChangeCommitted);
       this.instancesComboBox.DataSourceChanged += new System.EventHandler(this.instancesComboBox_DataSourceChanged);
-      this.instancesComboBox.SelectionChangeCommitted += new System.EventHandler(instancesComboBox_SelectionChangeCommitted);
       // 
       // openFileDialog
@@ -83,14 +87,99 @@
       this.saveFileDialog.Title = "Save RegressionInstance...";
       // 
+      // instanceLabel
+      // 
+      this.instanceLabel.AutoSize = true;
+      this.instanceLabel.Location = new System.Drawing.Point(3, 5);
+      this.instanceLabel.Name = "instanceLabel";
+      this.instanceLabel.Size = new System.Drawing.Size(51, 13);
+      this.instanceLabel.TabIndex = 4;
+      this.instanceLabel.Text = "Instance:";
+      // 
+      // splitContainer2
+      // 
+      this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+      this.splitContainer2.IsSplitterFixed = true;
+      this.splitContainer2.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer2.Name = "splitContainer2";
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.exportButton);
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.instanceLabel);
+      this.splitContainer2.Panel2.Controls.Add(this.instancesComboBox);
+      this.splitContainer2.Size = new System.Drawing.Size(632, 23);
+      this.splitContainer2.SplitterDistance = 25;
+      this.splitContainer2.TabIndex = 21;
+      // 
+      // exportButton
+      // 
+      this.exportButton.Location = new System.Drawing.Point(1, 0);
+      this.exportButton.Name = "exportButton";
+      this.exportButton.Size = new System.Drawing.Size(24, 24);
+      this.exportButton.TabIndex = 20;
+      this.exportButton.Text = "Export";
+      this.exportButton.UseVisualStyleBackColor = true;
+      this.exportButton.Click += new System.EventHandler(exportButton_Click);
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
+      this.splitContainer1.IsSplitterFixed = true;
+      this.splitContainer1.Location = new System.Drawing.Point(33, -1);
+      this.splitContainer1.Name = "splitContainer1";
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.importButton);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
+      this.splitContainer1.Size = new System.Drawing.Size(661, 23);
+      this.splitContainer1.SplitterDistance = 25;
+      this.splitContainer1.TabIndex = 21;
+      // 
+      // importButton
+      // 
+      this.importButton.Location = new System.Drawing.Point(0, 0);
+      this.importButton.Name = "importButton";
+      this.importButton.Size = new System.Drawing.Size(24, 24);
+      this.importButton.TabIndex = 19;
+      this.importButton.Text = "Import";
+      this.importButton.UseVisualStyleBackColor = true;
+      this.importButton.Click += new System.EventHandler(importButton_Click);
+      // 
+      // libraryInfoButton
+      // 
+      this.libraryInfoButton.Location = new System.Drawing.Point(3, -1);
+      this.libraryInfoButton.Name = "libraryInfoButton";
+      this.libraryInfoButton.Size = new System.Drawing.Size(24, 24);
+      this.libraryInfoButton.TabIndex = 22;
+      this.libraryInfoButton.Text = "Info";
+      this.libraryInfoButton.UseVisualStyleBackColor = true;
+      this.libraryInfoButton.Click += new System.EventHandler(this.libraryInfoButton_Click);
+      // 
       // ProblemInstanceProviderViewGeneric
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.Controls.Add(this.instanceLabel);
-      this.Controls.Add(this.instancesComboBox);
+      this.Controls.Add(this.libraryInfoButton);
+      this.Controls.Add(this.splitContainer1);
       this.Name = "ProblemInstanceProviderViewGeneric";
-      this.Size = new System.Drawing.Size(694, 21);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.Panel2.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
+      this.splitContainer2.ResumeLayout(false);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
       this.ResumeLayout(false);
-      this.PerformLayout();
 
     }
@@ -98,7 +187,12 @@
 
     protected System.Windows.Forms.OpenFileDialog openFileDialog;
-    protected System.Windows.Forms.Label instanceLabel;
     protected System.Windows.Forms.ComboBox instancesComboBox;
     protected System.Windows.Forms.SaveFileDialog saveFileDialog;
+    protected System.Windows.Forms.Label instanceLabel;
+    protected System.Windows.Forms.SplitContainer splitContainer2;
+    protected System.Windows.Forms.SplitContainer splitContainer1;
+    protected System.Windows.Forms.Button libraryInfoButton;
+    protected System.Windows.Forms.Button importButton;
+    protected System.Windows.Forms.Button exportButton;
   }
 }
Index: /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs
===================================================================
--- /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs	(revision 10020)
+++ /stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs	(revision 10021)
@@ -21,8 +21,10 @@
 
 using System;
-using System.ComponentModel;
+using System.Diagnostics;
+using System.IO;
 using System.Linq;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using HeuristicLab.Common.Resources;
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
@@ -32,5 +34,5 @@
   [View("ProblemInstanceProviderViewGeneric")]
   [Content(typeof(IProblemInstanceProvider<>), IsDefaultView = true)]
-  public partial class ProblemInstanceProviderViewGeneric<T> : ProblemInstanceProviderView {
+  public partial class ProblemInstanceProviderView<T> : ProblemInstanceProviderView {
 
     public new IProblemInstanceProvider<T> Content {
@@ -39,7 +41,7 @@
     }
 
-    private IProblemInstanceConsumer<T> GenericConsumer { get { return Consumer as IProblemInstanceConsumer<T>; } }
-
-    private IProblemInstanceConsumer consumer;
+    #region Importer & Exporter
+    protected IProblemInstanceConsumer<T> GenericConsumer { get { return Consumer as IProblemInstanceConsumer<T>; } }
+    protected IProblemInstanceConsumer consumer;
     public override IProblemInstanceConsumer Consumer {
       get { return consumer; }
@@ -47,9 +49,27 @@
         consumer = value;
         SetEnabledStateOfControls();
+        SetTooltip();
       }
     }
 
-    public ProblemInstanceProviderViewGeneric() {
+    protected IProblemInstanceExporter<T> GenericExporter { get { return Exporter as IProblemInstanceExporter<T>; } }
+    protected IProblemInstanceExporter exporter;
+    public override IProblemInstanceExporter Exporter {
+      get { return exporter; }
+      set {
+        exporter = value;
+        SetEnabledStateOfControls();
+      }
+    }
+    #endregion
+
+    public ProblemInstanceProviderView() {
       InitializeComponent();
+      importButton.Text = String.Empty;
+      importButton.Image = VSImageLibrary.Open;
+      exportButton.Text = String.Empty;
+      exportButton.Image = VSImageLibrary.SaveAs;
+      libraryInfoButton.Text = String.Empty;
+      libraryInfoButton.Image = VSImageLibrary.Help;
     }
 
@@ -65,4 +85,5 @@
         instancesComboBox.SelectedIndex = -1;
       }
+      SetTooltip();
     }
 
@@ -80,4 +101,9 @@
       base.SetEnabledStateOfControls();
       instancesComboBox.Enabled = !ReadOnly && !Locked && Content != null && GenericConsumer != null;
+      libraryInfoButton.Enabled = Content != null && Content.WebLink != null;
+      importButton.Enabled = !ReadOnly && !Locked && Content != null && GenericConsumer != null && Content.CanImportData;
+      splitContainer1.Panel1Collapsed = !importButton.Enabled;
+      exportButton.Enabled = !ReadOnly && !Locked && Content != null && GenericExporter != null && Content.CanExportData;
+      splitContainer2.Panel1Collapsed = !exportButton.Enabled;
     }
 
@@ -89,5 +115,5 @@
     }
 
-    private void instancesComboBox_SelectionChangeCommitted(object sender, System.EventArgs e) {
+    protected virtual void instancesComboBox_SelectionChangeCommitted(object sender, EventArgs e) {
       toolTip.SetToolTip(instancesComboBox, String.Empty);
       if (instancesComboBox.SelectedIndex >= 0) {
@@ -98,38 +124,64 @@
         // lock active view and show progress bar
         mainForm.AddOperationProgressToContent(activeView.Content, "Loading problem instance.");
-        // continuation for removing the progess bar from the active view
-        Action<Task> removeProgressFromContent = (_) => mainForm.RemoveOperationProgressFromContent(activeView.Content);
 
-        // task structure:
-        // loadFromProvider
-        // |
-        // +-> on fault -> show error dialog -> remove progress bar
-        // |
-        // `-> success  -> loadToProblem
-        //                 |
-        //                 +-> on fault -> show error dialog -> remove progress bar
-        //                 |
-        //                 `-> success -> set tool tip -> remove progress bar
-        var loadFromProvider = new Task<T>(() => Content.LoadData(descriptor));
+        Task.Factory.StartNew(() => {
+          T data;
+          try {
+            data = Content.LoadData(descriptor);
+          } catch (Exception ex) {
+            ErrorHandling.ShowErrorDialog(String.Format("Could not load the problem instance {0}", descriptor.Name), ex);
+            mainForm.RemoveOperationProgressFromContent(activeView.Content);
+            return;
+          }
+          try {
+            GenericConsumer.Load(data);
+          } catch (Exception ex) {
+            ErrorHandling.ShowErrorDialog(String.Format("This problem does not support loading the instance {0}", descriptor.Name), ex);
+          } finally {
+            mainForm.RemoveOperationProgressFromContent(activeView.Content);
+          }
+        });
+      }
+    }
 
-        // success
-        var loadToProblem = loadFromProvider
-          .ContinueWith(task => GenericConsumer.Load(task.Result), TaskContinuationOptions.OnlyOnRanToCompletion);
-        // on error 
-        loadFromProvider
-          .ContinueWith(task => { ErrorHandling.ShowErrorDialog(String.Format("Could not load the problem instance {0}", descriptor.Name), task.Exception); }, TaskContinuationOptions.OnlyOnFaulted)
-          .ContinueWith(removeProgressFromContent);
+    private void libraryInfoButton_Click(object sender, EventArgs e) {
+      Process.Start(Content.WebLink.ToString());
+    }
 
-        // success
-        loadToProblem
-          .ContinueWith(task => toolTip.SetToolTip(instancesComboBox, descriptor.Description), TaskContinuationOptions.OnlyOnRanToCompletion)
-          .ContinueWith(removeProgressFromContent);
-        // on error
-        loadToProblem.ContinueWith(task => { ErrorHandling.ShowErrorDialog(String.Format("This problem does not support loading the instance {0}", descriptor.Name), task.Exception); }, TaskContinuationOptions.OnlyOnFaulted)
-        .ContinueWith(removeProgressFromContent);
+    protected virtual void importButton_Click(object sender, EventArgs e) {
+      openFileDialog.FileName = Content.Name + " instance";
+      if (openFileDialog.ShowDialog() == DialogResult.OK) {
+        T instance = default(T);
+        try {
+          instance = Content.ImportData(openFileDialog.FileName);
+        } catch (Exception ex) {
+          MessageBox.Show(String.Format("There was an error parsing the file: {0}", Environment.NewLine + ex.Message), "Error while parsing", MessageBoxButtons.OK, MessageBoxIcon.Error);
+          return;
+        }
+        try {
+          GenericConsumer.Load(instance);
+          instancesComboBox.SelectedIndex = -1;
+        } catch (Exception ex) {
+          MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
+        }
+      }
+    }
 
-        // start async loading task
-        loadFromProvider.Start();
+    protected virtual void exportButton_Click(object sender, EventArgs e) {
+      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
+        try {
+          Content.ExportData(GenericExporter.Export(), saveFileDialog.FileName);
+        } catch (Exception ex) {
+          ErrorHandling.ShowErrorDialog(this, ex);
+        }
       }
+    }
+
+    protected override void SetTooltip() {
+      toolTip.SetToolTip(importButton, "Import a " + GetProblemType() + " from a file in the " + GetProviderFormatInfo() + " format.");
+      toolTip.SetToolTip(exportButton, "Export currently loaded " + GetProblemType() + " to a file in the " + GetProviderFormatInfo() + " format.");
+      if (Content != null && Content.WebLink != null)
+        toolTip.SetToolTip(libraryInfoButton, "Browse to " + Content.WebLink);
+      else toolTip.SetToolTip(libraryInfoButton, "Library does not have a web reference.");
     }
   }
Index: /stable/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs	(revision 10020)
+++ /stable/HeuristicLab.Problems.Scheduling.Views/3.3/JobShopSchedulingProblemView.Designer.cs	(revision 10021)
@@ -71,8 +71,8 @@
       // ProblemInstanceConsumerViewHost
       // 
-      this.ProblemInstanceConsumerViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
-      this.ProblemInstanceConsumerViewHost.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.ProblemInstanceConsumerViewHost.Location = new System.Drawing.Point(0, 0);
-      this.ProblemInstanceConsumerViewHost.Size = new System.Drawing.Size(511, 26);
+      this.problemInstanceProviderViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
+      this.problemInstanceProviderViewHost.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.problemInstanceProviderViewHost.Location = new System.Drawing.Point(0, 0);
+      this.problemInstanceProviderViewHost.Size = new System.Drawing.Size(511, 26);
       // 
       // parameterCollectionView
@@ -95,6 +95,6 @@
       // problemTabControl
       // 
-      this.problemTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
+      this.problemTabControl.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.problemTabControl.Controls.Add(this.problemTabPage);
