Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationPerformanceMeasures.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationPerformanceMeasures.cs	(revision 11763)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationPerformanceMeasures.cs	(revision 11766)
@@ -21,4 +21,5 @@
 
 using System;
+using HeuristicLab.Common;
 using HeuristicLab.Data;
 using HeuristicLab.Optimization;
@@ -51,4 +52,10 @@
     protected ClassificationPerformanceMeasuresResultCollection(bool deserializing)
       : base(deserializing) {
+    }
+
+    protected ClassificationPerformanceMeasuresResultCollection(ClassificationPerformanceMeasuresResultCollection original, Cloner cloner)
+      : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ClassificationPerformanceMeasuresResultCollection(this, cloner);
     }
 
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblemData.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblemData.cs	(revision 11763)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationProblemData.cs	(revision 11766)
@@ -36,5 +36,5 @@
     protected const string ClassNamesParameterName = "ClassNames";
     protected const string ClassificationPenaltiesParameterName = "ClassificationPenalties";
-    protected const string PositiveClassNameParameterName = "PositiveClass";
+    protected const string PositiveClassParameterName = "PositiveClass";
     protected const int MaximumNumberOfClasses = 100;
     protected const int InspectedRowsToDetermineTargets = 2000;
@@ -214,6 +214,6 @@
       get { return (IFixedValueParameter<StringMatrix>)Parameters[ClassNamesParameterName]; }
     }
-    public IConstrainedValueParameter<StringValue> PositiveClassNameParameter {
-      get { return (IConstrainedValueParameter<StringValue>)Parameters[PositiveClassNameParameterName]; }
+    public IConstrainedValueParameter<StringValue> PositiveClassParameter {
+      get { return (IConstrainedValueParameter<StringValue>)Parameters[PositiveClassParameterName]; }
     }
     public IFixedValueParameter<DoubleMatrix> ClassificationPenaltiesParameter {
@@ -267,10 +267,10 @@
     }
 
-    public string PositiveClassName {
-      get { return PositiveClassNameParameter.Value.Value; }
+    public string PositiveClass {
+      get { return PositiveClassParameter.Value.Value; }
       set {
-        var matchingValue = PositiveClassNameParameter.ValidValues.SingleOrDefault(x => x.Value == value);
+        var matchingValue = PositiveClassParameter.ValidValues.SingleOrDefault(x => x.Value == value);
         if (matchingValue == null) throw new ArgumentException(string.Format("{0} cannot be set as positive class.", value));
-        PositiveClassNameParameter.Value = matchingValue;
+        PositiveClassParameter.Value = matchingValue;
       }
     }
@@ -285,7 +285,7 @@
       // BackwardsCompatibility3.4
       #region Backwards compatible code, remove with 3.5
-      if (!Parameters.ContainsKey(PositiveClassNameParameterName)) {
+      if (!Parameters.ContainsKey(PositiveClassParameterName)) {
         var validValues = new ItemSet<StringValue>(ClassNames.Select(s => new StringValue(s).AsReadOnly()));
-        Parameters.Add(new ConstrainedValueParameter<StringValue>(PositiveClassNameParameterName,
+        Parameters.Add(new ConstrainedValueParameter<StringValue>(PositiveClassParameterName,
           "The positive class which is used for quality measure calculation (e.g., specifity, sensitivity,...)", validValues, validValues.First()));
       }
@@ -329,5 +329,5 @@
       Parameters.Add(new ConstrainedValueParameter<StringValue>(TargetVariableParameterName, new ItemSet<StringValue>(validTargetVariableValues), target));
       Parameters.Add(new FixedValueParameter<StringMatrix>(ClassNamesParameterName, ""));
-      Parameters.Add(new ConstrainedValueParameter<StringValue>(PositiveClassNameParameterName, "The positive class which is used for quality measure calculation (e.g., specifity, sensitivity,...)"));
+      Parameters.Add(new ConstrainedValueParameter<StringValue>(PositiveClassParameterName, "The positive class which is used for quality measure calculation (e.g., specifity, sensitivity,...)"));
       Parameters.Add(new FixedValueParameter<DoubleMatrix>(ClassificationPenaltiesParameterName, ""));
 
@@ -363,7 +363,7 @@
       ClassNamesParameter.Value.RowNames = ClassValues.Select(s => "ClassValue: " + s);
 
-      PositiveClassNameParameter.ValidValues.Clear();
+      PositiveClassParameter.ValidValues.Clear();
       foreach (var className in ClassNames) {
-        PositiveClassNameParameter.ValidValues.Add(new StringValue(className).AsReadOnly());
+        PositiveClassParameter.ValidValues.Add(new StringValue(className).AsReadOnly());
       }
 
@@ -439,5 +439,5 @@
     }
     private void Parameter_ValueChanged(object sender, EventArgs e) {
-      var oldPositiveClass = PositiveClassName;
+      var oldPositiveClass = PositiveClass;
       var oldClassNames = classNamesCache;
       var index = oldClassNames.IndexOf(oldPositiveClass);
@@ -447,9 +447,9 @@
       ClassificationPenaltiesParameter.Value.ColumnNames = ClassNames.Select(name => "Estimated " + name);
 
-      PositiveClassNameParameter.ValidValues.Clear();
+      PositiveClassParameter.ValidValues.Clear();
       foreach (var className in ClassNames) {
-        PositiveClassNameParameter.ValidValues.Add(new StringValue(className).AsReadOnly());
-      }
-      PositiveClassNameParameter.Value = PositiveClassNameParameter.ValidValues.ElementAt(index);
+        PositiveClassParameter.ValidValues.Add(new StringValue(className).AsReadOnly());
+      }
+      PositiveClassParameter.Value = PositiveClassParameter.ValidValues.ElementAt(index);
 
       OnChanged();
@@ -477,6 +477,6 @@
       }
 
-      var newPositivieClassName = classificationProblemData.PositiveClassName;
-      if (newPositivieClassName != PositiveClassName) {
+      var newPositivieClassName = classificationProblemData.PositiveClass;
+      if (newPositivieClassName != PositiveClass) {
         errorMessage = errorMessage + string.Format("The positive class differs in the provided classification problem data.");
         returnValue = false;
@@ -497,5 +497,5 @@
         ClassNamesParameter.Value[i, 0] = classificationProblemData.ClassNames.ElementAt(i);
 
-      PositiveClassName = classificationProblemData.PositiveClassName;
+      PositiveClass = classificationProblemData.PositiveClass;
 
       for (int i = 0; i < Classes; i++) {
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolutionBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolutionBase.cs	(revision 11763)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Classification/ClassificationSolutionBase.cs	(revision 11766)
@@ -95,5 +95,5 @@
                               In a multiclass classification all misclassifications of the negative class will be treated as true negatives except on positive class estimations.",
                               new ClassificationPerformanceMeasuresResultCollection()));
-        RecalculateResults();
+        CalculateClassificationResults();
       }
     }
@@ -106,5 +106,5 @@
       double[] originalTestClassValues = ProblemData.Dataset.GetDoubleValues(ProblemData.TargetVariable, ProblemData.TestIndices).ToArray();
 
-      var positiveClassName = ProblemData.PositiveClassName;
+      var positiveClassName = ProblemData.PositiveClass;
       double positiveClassValue = ProblemData.GetClassValue(positiveClassName);
       ClassificationPerformanceMeasuresCalculator trainingPerformanceCalculator = new ClassificationPerformanceMeasuresCalculator(positiveClassName, positiveClassValue);
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IClassificationProblemData.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IClassificationProblemData.cs	(revision 11763)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Interfaces/Classification/IClassificationProblemData.cs	(revision 11766)
@@ -26,5 +26,5 @@
 
     IEnumerable<string> ClassNames { get; }
-    string PositiveClassName { get; set; }
+    string PositiveClass { get; set; }
     IEnumerable<double> ClassValues { get; }
     int Classes { get; }
