Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClassificationSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClassificationSolutionView.cs	(revision 10538)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClassificationSolutionView.cs	(revision 11009)
@@ -20,10 +20,7 @@
 #endregion
 
-using System;
 using System.Windows.Forms;
-using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
-using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.DataAnalysis.Views {
@@ -54,22 +51,4 @@
     }
     #endregion
-
-    protected override bool CheckCompatibilityOfProblemData(IDataAnalysisProblemData problemData) {
-      IClassificationProblemData classificationProblemData = problemData as IClassificationProblemData;
-      if (classificationProblemData == null) {
-        ErrorHandling.ShowErrorDialog(this, new ArgumentException("The problem data is no classification problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided."));
-        return false;
-      }
-
-      if (!classificationProblemData.TargetVariable.Equals(Content.ProblemData.TargetVariable)) {
-        string message = "The target variables are not matching. Old target variable: '"
-                         + Content.ProblemData.TargetVariable
-                         + "'. New targetvariable: '" + classificationProblemData.TargetVariable + "'";
-        ErrorHandling.ShowErrorDialog(this, new InvalidOperationException(message));
-        return false;
-      }
-
-      return base.CheckCompatibilityOfProblemData(problemData);
-    }
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.Designer.cs	(revision 10538)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.Designer.cs	(revision 11009)
@@ -19,5 +19,4 @@
  */
 #endregion
-
 
 namespace HeuristicLab.Problems.DataAnalysis.Views {
@@ -46,6 +45,5 @@
     /// </summary>
     private void InitializeComponent() {
-      this.exportButton = new System.Windows.Forms.Button();
-      this.exportFileDialog = new System.Windows.Forms.SaveFileDialog();
+      this.flowLayoutPanel = new System.Windows.Forms.FlowLayoutPanel();
       this.loadProblemDataButton = new System.Windows.Forms.Button();
       this.loadProblemDataFileDialog = new System.Windows.Forms.OpenFileDialog();
@@ -57,4 +55,13 @@
       this.detailsGroupBox.SuspendLayout();
       this.SuspendLayout();
+      //
+      // itemslistView
+      //
+      this.itemsListView.Location = new System.Drawing.Point(this.itemsListView.Location.X, this.itemsListView.Location.Y + 3);
+      //
+      // detailsGroupBox
+      //
+      this.detailsGroupBox.Location = new System.Drawing.Point(this.detailsGroupBox.Location.X, this.detailsGroupBox.Location.Y + 3);
+      //
       // 
       // splitContainer
@@ -63,41 +70,33 @@
       // splitContainer.Panel2
       // 
-      this.splitContainer.Panel2.Controls.Add(this.loadProblemDataButton);
-      this.splitContainer.Panel2.Controls.Add(this.exportButton);
+      this.splitContainer.Panel2.Controls.Add(this.flowLayoutPanel);
       // 
       // itemsGroupBox
       // 
       this.itemsGroupBox.Text = "Data Analysis Solution";
-      // 
-      // addButton
-      // 
-      this.toolTip.SetToolTip(this.addButton, "Add");
-      // 
-      // removeButton
-      // 
-      this.toolTip.SetToolTip(this.removeButton, "Remove");
-      // 
-      // 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(194, 3);
-      this.exportButton.Name = "exportButton";
-      this.exportButton.Size = new System.Drawing.Size(75, 24);
-      this.exportButton.TabIndex = 6;
-      this.exportButton.Text = "Export";
-      this.exportButton.UseVisualStyleBackColor = true;
-      this.exportButton.Click += new System.EventHandler(this.exportButton_Click);
+      //
+      // flowLayoutPanel
+      //
+      this.flowLayoutPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.flowLayoutPanel.FlowDirection = System.Windows.Forms.FlowDirection.LeftToRight;
+      this.flowLayoutPanel.Location = new System.Drawing.Point(0, 0);
+      this.flowLayoutPanel.Padding = new System.Windows.Forms.Padding(3, 0, 3, 0);
+      this.flowLayoutPanel.Size = new System.Drawing.Size(266, 30);
+      this.flowLayoutPanel.Controls.Add(this.loadProblemDataButton);
       //
       // loadProblemDataButton
       //
-      this.loadProblemDataButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
-      this.loadProblemDataButton.Location = new System.Drawing.Point(3, 3);
+      this.loadProblemDataButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
+      this.loadProblemDataButton.AutoSize = true;
+      this.loadProblemDataButton.Image = HeuristicLab.Common.Resources.VSImageLibrary.Open;
+      this.loadProblemDataButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
       this.loadProblemDataButton.Name = "loadProblemDataButton";
-      this.loadProblemDataButton.Size = new System.Drawing.Size(75, 24);
-      this.loadProblemDataButton.TabIndex = 7;
-      this.loadProblemDataButton.Text = "Load Data";
+      this.loadProblemDataButton.Size = new System.Drawing.Size(105, 24);
+      this.loadProblemDataButton.TabIndex = 6;
+      this.loadProblemDataButton.Text = "Load new Data";
+      this.loadProblemDataButton.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
       this.loadProblemDataButton.UseVisualStyleBackColor = true;
       this.loadProblemDataButton.Click += new System.EventHandler(this.loadProblemDataButton_Click);
-      this.toolTip.SetToolTip(this.loadProblemDataButton, "Load new data");
+      this.toolTip.SetToolTip(this.loadProblemDataButton, "Creates a new data analysis solution with the same model and the loaded problem data.");
       // 
       // openFileDialog
@@ -122,8 +121,7 @@
     #endregion
 
-    private System.Windows.Forms.SaveFileDialog exportFileDialog;
-    protected System.Windows.Forms.Button exportButton;
     protected System.Windows.Forms.Button loadProblemDataButton;
     protected System.Windows.Forms.OpenFileDialog loadProblemDataFileDialog;
+    protected System.Windows.Forms.FlowLayoutPanel flowLayoutPanel;
 
   }
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs	(revision 10538)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs	(revision 11009)
@@ -22,8 +22,6 @@
 using System;
 using System.Collections.Generic;
-using System.ComponentModel;
 using System.Drawing;
 using System.Linq;
-using System.Text;
 using System.Windows.Forms;
 using HeuristicLab.Core;
@@ -54,11 +52,5 @@
       addButton.Enabled = false;
       removeButton.Enabled = false;
-      if (Content == null) {
-        exportButton.Enabled = false;
-        loadProblemDataButton.Enabled = false;
-      } else {
-        exportButton.Enabled = !Locked;
-        loadProblemDataButton.Enabled = !Locked;
-      }
+      loadProblemDataButton.Enabled = Content != null && !Locked;
     }
 
@@ -133,46 +125,31 @@
     protected virtual void loadProblemDataButton_Click(object sender, EventArgs e) {
       if (loadProblemDataFileDialog.ShowDialog(this) != DialogResult.OK) return;
-      object hlFile = XmlParser.Deserialize(loadProblemDataFileDialog.FileName);
-
-      IDataAnalysisProblemData problemData = null;
-      if (hlFile is IDataAnalysisProblemData) {
-        problemData = (IDataAnalysisProblemData)hlFile;
-      } else if (hlFile is IDataAnalysisProblem) {
-        problemData = ((IDataAnalysisProblem)hlFile).ProblemData;
-      } else if (hlFile is IDataAnalysisSolution) {
-        problemData = ((IDataAnalysisSolution)hlFile).ProblemData;
-      }
-
-      if (problemData == null) {
-        ErrorHandling.ShowErrorDialog(this, new NullReferenceException("The problem data is null." + Environment.NewLine
-                                      + "The .hl-file contains no DataAnalysisProblemData or DataAnylsisProblem."));
-        return;
-      }
-
-      if (CheckCompatibilityOfProblemData(problemData)) {
+      try {
+        object hlFile = XmlParser.Deserialize(loadProblemDataFileDialog.FileName);
+
+        IDataAnalysisProblemData problemData = null;
+        if (hlFile is IDataAnalysisProblemData) {
+          problemData = (IDataAnalysisProblemData)hlFile;
+        } else if (hlFile is IDataAnalysisProblem) {
+          problemData = ((IDataAnalysisProblem)hlFile).ProblemData;
+        } else if (hlFile is IDataAnalysisSolution) {
+          problemData = ((IDataAnalysisSolution)hlFile).ProblemData;
+        }
+
+        if (problemData == null)
+          throw new InvalidOperationException("The chosen HeuristicLab file does not contain a ProblemData, Problem, or DataAnalysisSolution.");
+
         var solution = (IDataAnalysisSolution)Content.Clone();
+        problemData.AdjustProblemDataProperties(solution.ProblemData);
         solution.ProblemData = problemData;
-        solution.Name += " with loaded problem data (" + loadProblemDataFileDialog + ")";
+        if (!solution.Name.EndsWith(" with loaded problemData"))
+          solution.Name += " with loaded problemData";
         MainFormManager.MainForm.ShowContent(solution);
       }
-    }
-
-    private void exportButton_Click(object sender, EventArgs e) {
-      var exporters = ApplicationManager.Manager.GetInstances<IDataAnalysisSolutionExporter>()
-        .Where(exporter => exporter.Supports(Content)).ToArray();
-      exportFileDialog.Filter = exporters.Skip(1)
-        .Aggregate(exporters.First().FileTypeFilter, (s, exporter) => s + "|" + exporter.FileTypeFilter);
-      var result = exportFileDialog.ShowDialog();
-      if (result == DialogResult.OK) {
-
-        var name = exportFileDialog.FileName;
-        var selectedExporter = exporters.Single(exporter => exporter.FileTypeFilter == exportFileDialog.Filter);
-
-        using (BackgroundWorker bg = new BackgroundWorker()) {
-          MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>().AddOperationProgressToView(this, "Exportion solution to " + name + ".");
-          bg.DoWork += (_, __) => selectedExporter.Export(Content, name);
-          bg.RunWorkerCompleted += (_, __) => MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromView(this);
-          bg.RunWorkerAsync();
-        }
+      catch (InvalidOperationException invalidOperationException) {
+        ErrorHandling.ShowErrorDialog(this, invalidOperationException);
+      }
+      catch (ArgumentException argumentException) {
+        ErrorHandling.ShowErrorDialog(this, argumentException);
       }
     }
@@ -224,7 +201,8 @@
       validDragOperation = false;
       if (ReadOnly) return;
+      if (e.Effect != DragDropEffects.Copy) return;
 
       var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
-      if (dropData is DataAnalysisProblemData) validDragOperation = true;
+      if (dropData is IDataAnalysisProblemData) validDragOperation = true;
       else if (dropData is IDataAnalysisProblem) validDragOperation = true;
       else if (dropData is IValueParameter) {
@@ -248,25 +226,21 @@
       }
       if (problemData == null) return;
-      CheckCompatibilityOfProblemData(problemData);
-      Content.ProblemData = (IDataAnalysisProblemData)problemData.Clone();
+
+      try {
+        problemData.AdjustProblemDataProperties(Content.ProblemData);
+        Content.ProblemData = problemData;
+
+        if (!Content.Name.EndsWith(" with changed problemData"))
+          Content.Name += " with changed problemData";
+      }
+      catch (InvalidOperationException invalidOperationException) {
+        ErrorHandling.ShowErrorDialog(this, invalidOperationException);
+      }
+      catch (ArgumentException argumentException) {
+        ErrorHandling.ShowErrorDialog(this, argumentException);
+      }
     }
     #endregion
 
-    #region load problem data
-    protected virtual bool CheckCompatibilityOfProblemData(IDataAnalysisProblemData problemData) {
-      StringBuilder message = new StringBuilder();
-      List<string> variables = problemData.InputVariables.Select(x => x.Value).ToList();
-      foreach (var item in Content.ProblemData.InputVariables.CheckedItems) {
-        if (!variables.Contains(item.Value.Value))
-          message.AppendLine("Input variable '" + item.Value.Value + "' is not in the new problem data.");
-      }
-
-      if (message.Length != 0) {
-        ErrorHandling.ShowErrorDialog(this, new InvalidOperationException(message.ToString()));
-        return false;
-      }
-      return true;
-    }
-    #endregion
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/RegressionSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/RegressionSolutionView.cs	(revision 10538)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/RegressionSolutionView.cs	(revision 11009)
@@ -20,10 +20,7 @@
 #endregion
 
-using System;
 using System.Windows.Forms;
-using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
-using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.DataAnalysis.Views {
@@ -54,22 +51,4 @@
     }
     #endregion
-
-    protected override bool CheckCompatibilityOfProblemData(IDataAnalysisProblemData problemData) {
-      IRegressionProblemData regressionProblemData = problemData as IRegressionProblemData;
-      if (regressionProblemData == null) {
-        ErrorHandling.ShowErrorDialog(this, new ArgumentException("The problem data is no regression problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided."));
-        return false;
-      }
-
-      if (!regressionProblemData.TargetVariable.Equals(Content.ProblemData.TargetVariable)) {
-        string message = "The target variables are not matching. Old target variable: '"
-                         + Content.ProblemData.TargetVariable
-                         + "'. New targetvariable: '" + regressionProblemData.TargetVariable + "'";
-        ErrorHandling.ShowErrorDialog(this, new InvalidOperationException(message));
-        return false;
-      }
-
-      return base.CheckCompatibilityOfProblemData(problemData);
-    }
   }
 }
