Index: /branches/HeuristicLab.Classification/HeuristicLab.Algorithms.DataAnalysis.Views/3.3/CrossValidationView.cs
===================================================================
--- /branches/HeuristicLab.Classification/HeuristicLab.Algorithms.DataAnalysis.Views/3.3/CrossValidationView.cs	(revision 4562)
+++ /branches/HeuristicLab.Classification/HeuristicLab.Algorithms.DataAnalysis.Views/3.3/CrossValidationView.cs	(revision 4563)
@@ -192,5 +192,5 @@
 
     private void workersNumericUpDown_Validated(object sender, EventArgs e) {
-      if (foldsNumericUpDown.Text == string.Empty)
+      if (workersNumericUpDown.Text == string.Empty)
         workersNumericUpDown.Text = workersNumericUpDown.Value.ToString();
     }
@@ -261,9 +261,9 @@
         problemTypeSelectorDialog.Caption = "Select Problem";
         problemTypeSelectorDialog.TypeSelector.Caption = "Available Problems";
-        problemTypeSelectorDialog.TypeSelector.Configure(typeof(IDataAnalysisProblem), false, true);
+        problemTypeSelectorDialog.TypeSelector.Configure(Content.ProblemType, false, true);
       }
       if (problemTypeSelectorDialog.ShowDialog(this) == DialogResult.OK) {
         try {
-          Content.Problem = (IDataAnalysisProblem)problemTypeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
+          Content.Problem = (ISingleObjectiveDataAnalysisProblem)problemTypeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
         }
         catch (Exception ex) {
@@ -282,5 +282,5 @@
           try {
             if (error != null) throw error;
-            IDataAnalysisProblem problem = content as IDataAnalysisProblem;
+            ISingleObjectiveDataAnalysisProblem problem = content as ISingleObjectiveDataAnalysisProblem;
             if (problem == null && (Content.Algorithm.ProblemType.IsAssignableFrom(content.GetType())))
               Invoke(new Action(() =>
@@ -339,6 +339,6 @@
     private void algorithmProblemTabPage_DragDrop(object sender, DragEventArgs e) {
       if (e.Effect != DragDropEffects.None) {
-        IDataAnalysisProblem problem = e.Data.GetData("Value") as IDataAnalysisProblem;
-        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) problem = (IDataAnalysisProblem)problem.Clone();
+        ISingleObjectiveDataAnalysisProblem problem = e.Data.GetData("Value") as ISingleObjectiveDataAnalysisProblem;
+        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) problem = (ISingleObjectiveDataAnalysisProblem)problem.Clone();
         Content.Problem = problem;
       }
Index: /branches/HeuristicLab.Classification/HeuristicLab.Algorithms.DataAnalysis/3.3/CrossValidation.cs
===================================================================
--- /branches/HeuristicLab.Classification/HeuristicLab.Algorithms.DataAnalysis/3.3/CrossValidation.cs	(revision 4562)
+++ /branches/HeuristicLab.Classification/HeuristicLab.Algorithms.DataAnalysis/3.3/CrossValidation.cs	(revision 4563)
@@ -73,5 +73,5 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       CrossValidation clone = (CrossValidation)base.Clone(cloner);
-      clone.DeregisterEvents();
+      clone.DeregisterEvents(); //not necessary
       clone.executionState = executionState;
       clone.executionTime = executionTime;
@@ -107,5 +107,5 @@
 
           if (algorithm != null) {
-            algorithm.StoreAlgorithmInEachRun = StoreAlgorithmInEachRun;
+            algorithm.StoreAlgorithmInEachRun = false;
             RegisterAlgorithmEvents();
             algorithm.Prepare(true);
@@ -121,10 +121,10 @@
 
     [Storable]
-    private IDataAnalysisProblem cachedProblem;
-    public IDataAnalysisProblem Problem {
+    private ISingleObjectiveDataAnalysisProblem problem;
+    public ISingleObjectiveDataAnalysisProblem Problem {
       get {
         if (algorithm == null)
           return null;
-        return (IDataAnalysisProblem)algorithm.Problem;
+        return (ISingleObjectiveDataAnalysisProblem)algorithm.Problem;
       }
       set {
@@ -133,5 +133,5 @@
         if (algorithm == null) throw new ArgumentNullException("Could not set a problem before an algorithm was set.");
         algorithm.Problem = value;
-        cachedProblem = value;
+        problem = value;
       }
     }
@@ -142,9 +142,9 @@
         if (value != null && !ProblemType.IsInstanceOfType(value))
           throw new ArgumentException("Only DataAnalysisProblems could be used for the cross validation.");
-        Problem = (IDataAnalysisProblem)value;
+        Problem = (ISingleObjectiveDataAnalysisProblem)value;
       }
     }
     public Type ProblemType {
-      get { return typeof(IDataAnalysisProblem); }
+      get { return typeof(ISingleObjectiveDataAnalysisProblem); }
     }
 
@@ -245,5 +245,5 @@
 
     public void Prepare() {
-      if ((ExecutionState != ExecutionState.Prepared) && (ExecutionState != ExecutionState.Paused) && (ExecutionState != ExecutionState.Stopped))
+      if (ExecutionState == ExecutionState.Started)
         throw new InvalidOperationException(string.Format("Prepare not allowed in execution state \"{0}\".", ExecutionState));
       clonedAlgorithms.Clear();
@@ -442,9 +442,9 @@
     }
     private void Algorithm_ProblemChanged(object sender, EventArgs e) {
-      if (algorithm.Problem != null && !(algorithm.Problem is IDataAnalysisProblem)) {
-        algorithm.Problem = cachedProblem;
+      if (algorithm.Problem != null && !(algorithm.Problem is ISingleObjectiveDataAnalysisProblem)) {
+        algorithm.Problem = problem;
         throw new ArgumentException("A cross validation algorithm can only contain DataAnalysisProblems.");
       }
-      cachedProblem = (IDataAnalysisProblem)algorithm.Problem;
+      problem = (ISingleObjectiveDataAnalysisProblem)algorithm.Problem;
       OnProblemChanged();
     }
Index: /branches/HeuristicLab.Classification/HeuristicLab.Problems.DataAnalysis.Classification/3.3/ProblemBase/Problem.cs
===================================================================
--- /branches/HeuristicLab.Classification/HeuristicLab.Problems.DataAnalysis.Classification/3.3/ProblemBase/Problem.cs	(revision 4562)
+++ /branches/HeuristicLab.Classification/HeuristicLab.Problems.DataAnalysis.Classification/3.3/ProblemBase/Problem.cs	(revision 4563)
@@ -51,10 +51,10 @@
       Parameters.Add(new ValueParameter<T>(EvaluatorParameterName, "The operator used to evaluate a solution."));
       Parameters.Add(new ValueParameter<U>(SolutionCreateParameterName, "The operator to create a solution."));
-      RegisterParameterEventHandlers();
+      RegisterEventHandlers();
     }
 
     [StorableHook(HookType.AfterDeserialization)]
     private void AfterDeserialization() {
-      RegisterParameterEventHandlers();
+      RegisterEventHandlers();
     }
 
@@ -62,9 +62,9 @@
       Problem<T, U> clone = (Problem<T, U>)base.Clone(cloner);
       clone.operators = new ItemCollection<IOperator>(operators.Select(x => (IOperator)cloner.Clone(x)));
-      clone.RegisterParameterEventHandlers();
+      clone.RegisterEventHandlers();
       return clone;
     }
 
-    private void RegisterParameterEventHandlers() {
+    private void RegisterEventHandlers() {
       Operators.ItemsAdded += new CollectionItemsChangedEventHandler<IOperator>(Operators_Changed);
       Operators.ItemsRemoved += new CollectionItemsChangedEventHandler<IOperator>(Operators_Changed);
@@ -77,5 +77,5 @@
     #region properties
     private ItemCollection<IOperator> operators;
-    [Storable]
+    [Storable(Name = "Operators")]
     private IEnumerable<IOperator> StorableOperators {
       get { return operators; }
Index: /branches/HeuristicLab.Classification/HeuristicLab.Problems.DataAnalysis.Classification/3.3/SingleObjectiveClassificationProblem.cs
===================================================================
--- /branches/HeuristicLab.Classification/HeuristicLab.Problems.DataAnalysis.Classification/3.3/SingleObjectiveClassificationProblem.cs	(revision 4562)
+++ /branches/HeuristicLab.Classification/HeuristicLab.Problems.DataAnalysis.Classification/3.3/SingleObjectiveClassificationProblem.cs	(revision 4563)
@@ -30,5 +30,5 @@
   [Item("Classification Problem", "Represents a classfication problem.")]
   [StorableClass]
-  public abstract class SingleObjectiveClassificationProblem<T, U> : SingleObjectiveProblem<T, U>, IDataAnalysisProblem
+  public abstract class SingleObjectiveClassificationProblem<T, U> : SingleObjectiveProblem<T, U>, ISingleObjectiveDataAnalysisProblem
     where T : class, ISingleObjectiveEvaluator
     where U : class, ISolutionCreator {
