Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/ClassificationPerformanceMeasuresCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/ClassificationPerformanceMeasuresCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/ClassificationPerformanceMeasuresCalculator.cs	(revision 14330)
@@ -23,8 +23,7 @@
 using System.Collections.Generic;
 using HeuristicLab.Common;
-using HeuristicLab.Problems.DataAnalysis.OnlineCalculators;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class ClassificationPerformanceMeasuresCalculator {
+  public class ClassificationPerformanceMeasuresCalculator : IDeepCloneable {
 
     public ClassificationPerformanceMeasuresCalculator(string positiveClassName, double positiveClassValue) {
@@ -32,4 +31,14 @@
       this.positiveClassValue = positiveClassValue;
       Reset();
+    }
+
+    protected ClassificationPerformanceMeasuresCalculator(ClassificationPerformanceMeasuresCalculator original, Cloner cloner = null) {
+      positiveClassName = original.positiveClassName;
+      positiveClassValue = original.positiveClassValue;
+      truePositiveCount = original.truePositiveCount;
+      falsePositiveCount = original.falsePositiveCount;
+      trueNegativeCount = original.trueNegativeCount;
+      falseNegativeCount = original.falseNegativeCount;
+      errorState = original.errorState;
     }
 
@@ -138,4 +147,18 @@
       errorState = ErrorState;
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      return new ClassificationPerformanceMeasuresCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new ClassificationPerformanceMeasuresCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs	(revision 14330)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineAccuracyCalculator : IOnlineCalculator {
+  public class OnlineAccuracyCalculator : IOnlineCalculator, IDeepCloneable {
 
     private int correctlyClassified;
@@ -37,4 +37,11 @@
     public OnlineAccuracyCalculator() {
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    protected OnlineAccuracyCalculator(OnlineAccuracyCalculator other, Cloner cloner = null) {
+      correctlyClassified = other.correctlyClassified;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -90,4 +97,18 @@
       }
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      return new OnlineAccuracyCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineAccuracyCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs	(revision 14330)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineBoundedMeanSquaredErrorCalculator : IOnlineCalculator {
+  public class OnlineBoundedMeanSquaredErrorCalculator : IOnlineCalculator, IDeepCloneable {
 
     private double errorSum;
@@ -38,8 +39,16 @@
 
 
-    public OnlineBoundedMeanSquaredErrorCalculator(double lowerBound, double upperbound) {
+    public OnlineBoundedMeanSquaredErrorCalculator(double lowerBound, double upperBound) {
       LowerBound = lowerBound;
-      UpperBound = upperbound;
+      UpperBound = upperBound;
       Reset();
+    }
+
+    protected OnlineBoundedMeanSquaredErrorCalculator(OnlineBoundedMeanSquaredErrorCalculator original, Cloner cloner = null) {
+      LowerBound = original.LowerBound;
+      UpperBound = original.UpperBound;
+      n = original.n;
+      errorSum = original.errorSum;
+      errorState = original.ErrorState;
     }
 
@@ -96,4 +105,18 @@
       }
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      return new OnlineBoundedMeanSquaredErrorCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineBoundedMeanSquaredErrorCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs	(revision 14330)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineCovarianceCalculator : IOnlineCalculator {
+  public class OnlineCovarianceCalculator : IOnlineCalculator, IDeepCloneable {
 
     private double xMean, yMean, Cn;
@@ -36,4 +37,12 @@
     public OnlineCovarianceCalculator() {
       Reset();
+    }
+
+    protected OnlineCovarianceCalculator(OnlineCovarianceCalculator other, Cloner cloner = null) {
+      Cn = other.Cn;
+      xMean = other.xMean;
+      yMean = other.yMean;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -94,4 +103,18 @@
       }
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      return new OnlineCovarianceCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineCovarianceCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs	(revision 14330)
@@ -26,5 +26,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineDirectionalSymmetryCalculator : IOnlineTimeSeriesCalculator {
+  public class OnlineDirectionalSymmetryCalculator : IOnlineTimeSeriesCalculator, IDeepCloneable {
     private int n;
     private int nCorrect;
@@ -39,4 +39,10 @@
     public OnlineDirectionalSymmetryCalculator() {
       Reset();
+    }
+
+    protected OnlineDirectionalSymmetryCalculator(OnlineDirectionalSymmetryCalculator other, Cloner cloner = null) {
+      n = other.n;
+      nCorrect = other.nCorrect;
+      errorState = other.errorState;
     }
 
@@ -94,5 +100,5 @@
       return dsCalculator.DirectionalSymmetry;
     }
-    
+
     public static double Calculate(IEnumerable<double> startValues, IEnumerable<IEnumerable<double>> actualContinuations, IEnumerable<IEnumerable<double>> predictedContinuations, out OnlineCalculatorError errorState) {
       IEnumerator<double> startValueEnumerator = startValues.GetEnumerator();
@@ -116,4 +122,18 @@
       }
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      return new OnlineDirectionalSymmetryCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineDirectionalSymmetryCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs	(revision 14330)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineLinearScalingParameterCalculator {
+  public class OnlineLinearScalingParameterCalculator : IDeepCloneable {
 
     /// <summary>
@@ -65,4 +65,12 @@
       Reset();
     }
+
+    protected OnlineLinearScalingParameterCalculator(OnlineLinearScalingParameterCalculator other, Cloner cloner) {
+      targetMeanCalculator = (OnlineMeanAndVarianceCalculator)other.targetMeanCalculator.Clone(cloner);
+      originalMeanAndVarianceCalculator = (OnlineMeanAndVarianceCalculator)other.originalMeanAndVarianceCalculator.Clone(cloner);
+      originalTargetCovarianceCalculator = (OnlineCovarianceCalculator)other.originalTargetCovarianceCalculator.Clone(cloner);
+      // do not reset the calculators here
+    }
+
 
     public void Reset() {
@@ -117,4 +125,19 @@
       }
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      var cloner = new Cloner();
+      return new OnlineLinearScalingParameterCalculator(this, cloner);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineLinearScalingParameterCalculator(this, cloner);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs	(revision 14330)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMaxAbsoluteErrorCalculator : IOnlineCalculator {
+  public class OnlineMaxAbsoluteErrorCalculator : IOnlineCalculator, IDeepCloneable {
 
     private double mae;
@@ -36,4 +37,10 @@
     public OnlineMaxAbsoluteErrorCalculator() {
       Reset();
+    }
+
+    protected OnlineMaxAbsoluteErrorCalculator(OnlineMaxAbsoluteErrorCalculator other, Cloner cloner = null) {
+      mae = other.mae;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -88,4 +95,18 @@
       }
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      return new OnlineMaxAbsoluteErrorCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineMaxAbsoluteErrorCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs	(revision 14330)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanAbsoluteErrorCalculator : IOnlineCalculator {
+  public class OnlineMeanAbsoluteErrorCalculator : IOnlineCalculator, IDeepCloneable {
 
     private double sae;
@@ -36,4 +37,10 @@
     public OnlineMeanAbsoluteErrorCalculator() {
       Reset();
+    }
+
+    protected OnlineMeanAbsoluteErrorCalculator(OnlineMeanAbsoluteErrorCalculator other, Cloner cloner = null) {
+      sae = other.sae;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -87,4 +94,18 @@
       }
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      return new OnlineMeanAbsoluteErrorCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineMeanAbsoluteErrorCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs	(revision 14330)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanAbsolutePercentageErrorCalculator : IOnlineCalculator {
+  public class OnlineMeanAbsolutePercentageErrorCalculator : IOnlineCalculator, IDeepCloneable {
 
     private double sre;
@@ -37,4 +37,10 @@
     public OnlineMeanAbsolutePercentageErrorCalculator() {
       Reset();
+    }
+
+    protected OnlineMeanAbsolutePercentageErrorCalculator(OnlineMeanAbsolutePercentageErrorCalculator other, Cloner cloner = null) {
+      sre = other.sre;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -89,4 +95,18 @@
       }
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      return new OnlineMeanAbsolutePercentageErrorCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineMeanAbsolutePercentageErrorCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs	(revision 14330)
@@ -21,7 +21,8 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanAndVarianceCalculator {
+  public class OnlineMeanAndVarianceCalculator : IDeepCloneable {
 
     private double m_oldM, m_newM, m_oldS, m_newS;
@@ -66,4 +67,14 @@
     }
 
+    protected OnlineMeanAndVarianceCalculator(OnlineMeanAndVarianceCalculator other, Cloner cloner = null) {
+      m_oldS = other.m_oldS;
+      m_oldM = other.m_oldM;
+      m_newS = other.m_newS;
+      m_newM = other.m_newM;
+      n = other.n;
+      errorState = other.errorState;
+      varianceErrorState = other.varianceErrorState;
+    }
+
     public void Reset() {
       n = 0;
@@ -75,5 +86,5 @@
       if (double.IsNaN(x) || double.IsInfinity(x) || x > 1E13 || x < -1E13 || (errorState & OnlineCalculatorError.InvalidValueAdded) > 0) {
         errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-        varianceErrorState = errorState | OnlineCalculatorError.InvalidValueAdded;
+        varianceErrorState = varianceErrorState | OnlineCalculatorError.InvalidValueAdded;
       } else {
         n++;
@@ -106,4 +117,18 @@
       varianceErrorState = meanAndVarianceCalculator.VarianceErrorState;
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      return new OnlineMeanAndVarianceCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineMeanAndVarianceCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs	(revision 14330)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanErrorCalculator : IOnlineCalculator {
+  public class OnlineMeanErrorCalculator : IOnlineCalculator, IDeepCloneable {
 
     private readonly OnlineMeanAndVarianceCalculator meanAndVarianceCalculator;
@@ -34,4 +35,8 @@
       meanAndVarianceCalculator = new OnlineMeanAndVarianceCalculator();
       Reset();
+    }
+
+    protected OnlineMeanErrorCalculator(OnlineMeanErrorCalculator other, Cloner cloner) {
+      meanAndVarianceCalculator = (OnlineMeanAndVarianceCalculator)other.meanAndVarianceCalculator.Clone(cloner);
     }
 
@@ -74,4 +79,19 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var cloner = new Cloner();
+      return new OnlineMeanErrorCalculator(this, cloner);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineMeanErrorCalculator(this, cloner);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs	(revision 14330)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanSquaredErrorCalculator : IOnlineCalculator {
+  public class OnlineMeanSquaredErrorCalculator : IOnlineCalculator, IDeepCloneable {
 
     private double sse;
@@ -36,4 +37,10 @@
     public OnlineMeanSquaredErrorCalculator() {
       Reset();
+    }
+
+    protected OnlineMeanSquaredErrorCalculator(OnlineMeanSquaredErrorCalculator other, Cloner cloner = null) {
+      sse = other.sse;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -87,4 +94,18 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      return new OnlineMeanSquaredErrorCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineMeanSquaredErrorCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs	(revision 14330)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineNormalizedMeanSquaredErrorCalculator : IOnlineCalculator {
+  public class OnlineNormalizedMeanSquaredErrorCalculator : IOnlineCalculator, IDeepCloneable {
     private OnlineMeanAndVarianceCalculator meanSquaredErrorCalculator;
     private OnlineMeanAndVarianceCalculator originalVarianceCalculator;
@@ -40,4 +41,9 @@
       originalVarianceCalculator = new OnlineMeanAndVarianceCalculator();
       Reset();
+    }
+
+    protected OnlineNormalizedMeanSquaredErrorCalculator(OnlineNormalizedMeanSquaredErrorCalculator other, Cloner cloner) {
+      meanSquaredErrorCalculator = (OnlineMeanAndVarianceCalculator)other.meanSquaredErrorCalculator.Clone(cloner);
+      originalVarianceCalculator = (OnlineMeanAndVarianceCalculator)other.originalVarianceCalculator.Clone(cloner);
     }
 
@@ -92,4 +98,19 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var cloner = new Cloner();
+      return new OnlineNormalizedMeanSquaredErrorCalculator(this, cloner);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineNormalizedMeanSquaredErrorCalculator(this, cloner);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs	(revision 14330)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlinePearsonsRCalculator : IOnlineCalculator {
+  public class OnlinePearsonsRCalculator : IOnlineCalculator, IDeepCloneable {
     private OnlineCovarianceCalculator covCalculator = new OnlineCovarianceCalculator();
     private OnlineMeanAndVarianceCalculator sxCalculator = new OnlineMeanAndVarianceCalculator();
@@ -46,4 +46,10 @@
 
     public OnlinePearsonsRCalculator() { }
+
+    protected OnlinePearsonsRCalculator(OnlinePearsonsRCalculator other, Cloner cloner) {
+      covCalculator = (OnlineCovarianceCalculator)other.covCalculator.Clone(cloner);
+      sxCalculator = (OnlineMeanAndVarianceCalculator)other.sxCalculator.Clone(cloner);
+      syCalculator = (OnlineMeanAndVarianceCalculator)other.syCalculator.Clone(cloner);
+    }
 
     #region IOnlineCalculator Members
@@ -91,4 +97,19 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var cloner = new Cloner();
+      return new OnlinePearsonsRCalculator(this, cloner);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlinePearsonsRCalculator(this, cloner);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs	(revision 14330)
@@ -26,5 +26,5 @@
 namespace HeuristicLab.Problems.DataAnalysis {
   [Obsolete("Use OnlinePearsonsRCalculator directly")]
-  public class OnlinePearsonsRSquaredCalculator : IOnlineCalculator {
+  public class OnlinePearsonsRSquaredCalculator : IOnlineCalculator, IDeepCloneable {
     private readonly OnlinePearsonsRCalculator rCalculator = new OnlinePearsonsRCalculator();
 
@@ -37,4 +37,8 @@
 
     public OnlinePearsonsRSquaredCalculator() { }
+
+    protected OnlinePearsonsRSquaredCalculator(OnlinePearsonsRSquaredCalculator other, Cloner cloner) {
+      this.rCalculator = (OnlinePearsonsRCalculator)other.rCalculator.Clone(cloner);
+    }
 
     #region IOnlineCalculator Members
@@ -59,4 +63,19 @@
       return r * r;
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var cloner = new Cloner();
+      return new OnlinePearsonsRSquaredCalculator(this, cloner);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlinePearsonsRSquaredCalculator(this, cloner);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs	(revision 14330)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineTheilsUStatisticCalculator : IOnlineTimeSeriesCalculator {
+  public class OnlineTheilsUStatisticCalculator : IOnlineTimeSeriesCalculator, IDeepCloneable {
     private OnlineMeanAndVarianceCalculator squaredErrorMeanCalculator;
     private OnlineMeanAndVarianceCalculator unbiasedEstimatorMeanCalculator;
@@ -43,4 +44,9 @@
       unbiasedEstimatorMeanCalculator = new OnlineMeanAndVarianceCalculator();
       Reset();
+    }
+
+    protected OnlineTheilsUStatisticCalculator(OnlineTheilsUStatisticCalculator other, Cloner cloner) {
+      squaredErrorMeanCalculator = (OnlineMeanAndVarianceCalculator)other.squaredErrorMeanCalculator.Clone(cloner);
+      unbiasedEstimatorMeanCalculator = (OnlineMeanAndVarianceCalculator)other.unbiasedEstimatorMeanCalculator.Clone(cloner);
     }
 
@@ -125,4 +131,19 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var cloner = new Cloner();
+      return new OnlineTheilsUStatisticCalculator(this, cloner);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineTheilsUStatisticCalculator(this, cloner);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs	(revision 14232)
+++ branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs	(revision 14330)
@@ -26,5 +26,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineWeightedDirectionalSymmetryCalculator : IOnlineTimeSeriesCalculator {
+  public class OnlineWeightedDirectionalSymmetryCalculator : IOnlineTimeSeriesCalculator, IDeepCloneable {
     private int n;
     private double correctSum;
@@ -40,4 +40,11 @@
     public OnlineWeightedDirectionalSymmetryCalculator() {
       Reset();
+    }
+
+    protected OnlineWeightedDirectionalSymmetryCalculator(OnlineWeightedDirectionalSymmetryCalculator other, Cloner cloner = null) {
+      n = other.n;
+      correctSum = other.correctSum;
+      incorrectSum = other.incorrectSum;
+      errorState = other.errorState;
     }
 
@@ -118,4 +125,18 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      return new OnlineWeightedDirectionalSymmetryCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = new OnlineWeightedDirectionalSymmetryCalculator(this);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
