Index: /trunk/sources/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/CrossValidationView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/CrossValidationView.cs	(revision 5812)
+++ /trunk/sources/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/CrossValidationView.cs	(revision 5813)
@@ -317,9 +317,28 @@
     private void algorithmTabPage_DragEnterOver(object sender, DragEventArgs e) {
       e.Effect = DragDropEffects.None;
+      IAlgorithm algorithm = e.Data.GetData("HeuristicLab") as IAlgorithm;
+      if (!ReadOnly && algorithm != null &&
+        (algorithm.ProblemType != null || Content.ProblemType.IsAssignableFrom(algorithm.Problem.GetType())) ){
+        if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link;  // ALT key
+        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Copy)) e.Effect = DragDropEffects.Copy;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Move)) e.Effect = DragDropEffects.Move;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Link)) e.Effect = DragDropEffects.Link;
+      }
+    }
+    private void algorithmTabPage_DragDrop(object sender, DragEventArgs e) {
+      if (e.Effect != DragDropEffects.None) {
+        IAlgorithm algorithm = e.Data.GetData("HeuristicLab") as IAlgorithm;
+        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) algorithm = (IAlgorithm)algorithm.Clone();
+        Content.Algorithm = algorithm;
+      }
+    }
+
+    private void algorithmProblemTabPage_DragEnterOver(object sender, DragEventArgs e) {
+      e.Effect = DragDropEffects.None;
       if (ReadOnly) return;
-      Type type = e.Data.GetData("Type") as Type;
-      IAlgorithm algorithm = e.Data.GetData("Value") as IAlgorithm;
-      if ((type != null) && (typeof(IAlgorithm).IsAssignableFrom(type)) &&
-        algorithm != null && Content.ProblemType.IsAssignableFrom(algorithm.Problem.GetType())) {
+      IProblem problem = e.Data.GetData("HeuristicLab") as IProblem;
+      if (problem != null && Content.ProblemType.IsAssignableFrom(problem.GetType()) &&
+        Content.Algorithm.ProblemType.IsAssignableFrom(problem.GetType())) {
         if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link;  // ALT key
         else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
@@ -329,29 +348,8 @@
       }
     }
-    private void algorithmTabPage_DragDrop(object sender, DragEventArgs e) {
-      if (e.Effect != DragDropEffects.None) {
-        IAlgorithm algorithm = e.Data.GetData("Value") as IAlgorithm;
-        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) algorithm = (IAlgorithm)algorithm.Clone();
-        Content.Algorithm = algorithm;
-      }
-    }
-
-    private void algorithmProblemTabPage_DragEnterOver(object sender, DragEventArgs e) {
-      e.Effect = DragDropEffects.None;
-      if (ReadOnly) return;
-      Type type = e.Data.GetData("Type") as Type;
-      if ((type != null) && (Content.ProblemType.IsAssignableFrom(type)) &&
-        (Content.Algorithm.ProblemType.IsAssignableFrom(type))) {
-        if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link;  // ALT key
-        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
-        else if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) e.Effect = DragDropEffects.Copy;
-        else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) e.Effect = DragDropEffects.Move;
-        else if ((e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) e.Effect = DragDropEffects.Link;
-      }
-    }
     private void algorithmProblemTabPage_DragDrop(object sender, DragEventArgs e) {
       if (e.Effect != DragDropEffects.None) {
-        IDataAnalysisProblem<IDataAnalysisProblemData> problem = e.Data.GetData("Value") as IDataAnalysisProblem<IDataAnalysisProblemData>;
-        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) problem = (IDataAnalysisProblem<IDataAnalysisProblemData>)problem.Clone();
+        IDataAnalysisProblem problem = e.Data.GetData("HeuristicLab") as IDataAnalysisProblem;
+        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) problem = (IDataAnalysisProblem)problem.Clone();
         Content.Problem = problem;
       }
