Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/ClassificationPerformanceMeasuresCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/ClassificationPerformanceMeasuresCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/ClassificationPerformanceMeasuresCalculator.cs	(revision 14293)
@@ -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,16 @@
       this.positiveClassValue = positiveClassValue;
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    private ClassificationPerformanceMeasuresCalculator(ClassificationPerformanceMeasuresCalculator other) {
+      // copy everything including the errorState
+      positiveClassName = other.positiveClassName;
+      positiveClassValue = other.positiveClassValue;
+      truePositiveCount = other.truePositiveCount;
+      falsePositiveCount = other.falsePositiveCount;
+      trueNegativeCount = other.trueNegativeCount;
+      falseNegativeCount = other.falseNegativeCount;
+      errorState = other.errorState;
     }
 
@@ -138,4 +149,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 = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs	(revision 14293)
@@ -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
+    private OnlineAccuracyCalculator(OnlineAccuracyCalculator other) {
+      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 = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs	(revision 14293)
@@ -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,17 @@
 
 
-    public OnlineBoundedMeanSquaredErrorCalculator(double lowerBound, double upperbound) {
+    public OnlineBoundedMeanSquaredErrorCalculator(double lowerBound, double upperBound) {
       LowerBound = lowerBound;
-      UpperBound = upperbound;
+      UpperBound = upperBound;
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    private OnlineBoundedMeanSquaredErrorCalculator(OnlineBoundedMeanSquaredErrorCalculator other) {
+      LowerBound = other.LowerBound;
+      UpperBound = other.UpperBound;
+      n = other.n;
+      errorSum = other.errorSum;
+      errorState = other.ErrorState;
     }
 
@@ -96,4 +106,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 = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs	(revision 14293)
@@ -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,13 @@
     public OnlineCovarianceCalculator() {
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    private OnlineCovarianceCalculator(OnlineCovarianceCalculator other) : this() {
+      Cn = other.Cn;
+      xMean = other.xMean;
+      yMean = other.yMean;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -94,4 +104,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 = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs	(revision 14293)
@@ -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,11 @@
     public OnlineDirectionalSymmetryCalculator() {
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    private OnlineDirectionalSymmetryCalculator(OnlineDirectionalSymmetryCalculator other) {
+      n = other.n;
+      nCorrect = other.nCorrect;
+      errorState = other.errorState;
     }
 
@@ -94,5 +101,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 +123,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 = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs	(revision 14293)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineLinearScalingParameterCalculator {
+  public class OnlineLinearScalingParameterCalculator : IDeepCloneable {
 
     /// <summary>
@@ -65,4 +65,13 @@
       Reset();
     }
+
+    // private constructor used internally by the Clone() method
+    private OnlineLinearScalingParameterCalculator(OnlineMeanAndVarianceCalculator targetMeanCalculator, OnlineMeanAndVarianceCalculator originalMeanAndVarianceCalculator, OnlineCovarianceCalculator originalTargetCovarianceCalculator) {
+      this.targetMeanCalculator = targetMeanCalculator;
+      this.originalMeanAndVarianceCalculator = originalMeanAndVarianceCalculator;
+      this.originalTargetCovarianceCalculator = originalTargetCovarianceCalculator;
+      // do not reset the calculators here
+    }
+
 
     public void Reset() {
@@ -117,4 +126,24 @@
       }
     }
+
+    // IDeepCloneable interface members
+    public object Clone() {
+      var targetMeanCalculatorClone = (OnlineMeanAndVarianceCalculator)targetMeanCalculator.Clone();
+      var originalMeanAndVarianceCalculatorClone = (OnlineMeanAndVarianceCalculator)originalMeanAndVarianceCalculator.Clone();
+      var originalTargetCovarianceCalculatorClone = (OnlineCovarianceCalculator)originalTargetCovarianceCalculator.Clone();
+      return new OnlineLinearScalingParameterCalculator(targetMeanCalculatorClone, originalMeanAndVarianceCalculatorClone, originalTargetCovarianceCalculatorClone);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        var targetMeanCalculatorClone = (OnlineMeanAndVarianceCalculator)targetMeanCalculator.Clone(cloner);
+        var originalMeanAndVarianceCalculatorClone = (OnlineMeanAndVarianceCalculator)originalMeanAndVarianceCalculator.Clone(cloner);
+        var originalTargetCovarianceCalculatorClone = (OnlineCovarianceCalculator)originalTargetCovarianceCalculator.Clone(cloner);
+        clone = new OnlineLinearScalingParameterCalculator(targetMeanCalculatorClone, originalMeanAndVarianceCalculatorClone, originalTargetCovarianceCalculatorClone);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs	(revision 14293)
@@ -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,11 @@
     public OnlineMaxAbsoluteErrorCalculator() {
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    private OnlineMaxAbsoluteErrorCalculator(OnlineMaxAbsoluteErrorCalculator other) {
+      mae = other.mae;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -88,4 +96,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 = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs	(revision 14293)
@@ -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();
+    }
+
+    private OnlineMeanAbsoluteErrorCalculator(OnlineMeanAbsoluteErrorCalculator other) {
+      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 = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs	(revision 14293)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanAbsolutePercentageErrorCalculator : IOnlineCalculator {
+  public class OnlineMeanAbsolutePercentageErrorCalculator : IOnlineCalculator, IDeepCloneable {
 
     private double sre;
@@ -37,4 +37,11 @@
     public OnlineMeanAbsolutePercentageErrorCalculator() {
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    private OnlineMeanAbsolutePercentageErrorCalculator(OnlineMeanAbsolutePercentageErrorCalculator other) {
+      sre = other.sre;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -89,4 +96,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 = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs	(revision 14293)
@@ -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 @@
     }
 
+    private OnlineMeanAndVarianceCalculator(OnlineMeanAndVarianceCalculator other) : this() {
+      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;
@@ -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 = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs	(revision 14293)
@@ -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();
+    }
+
+    private OnlineMeanErrorCalculator(OnlineMeanAndVarianceCalculator meanAndVarianceCalculator) {
+      this.meanAndVarianceCalculator = meanAndVarianceCalculator;
     }
 
@@ -74,4 +79,20 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var meanAndVarianceCalculatorClone = (OnlineMeanAndVarianceCalculator)meanAndVarianceCalculator.Clone();
+      return new OnlineMeanErrorCalculator(meanAndVarianceCalculatorClone);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        var meanAndVarianceCalculatorClone = (OnlineMeanAndVarianceCalculator)meanAndVarianceCalculator.Clone(cloner);
+        clone = new OnlineMeanErrorCalculator(meanAndVarianceCalculatorClone);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs	(revision 14293)
@@ -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,11 @@
     public OnlineMeanSquaredErrorCalculator() {
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    private OnlineMeanSquaredErrorCalculator(OnlineMeanSquaredErrorCalculator other) {
+      sse = other.sse;
+      n = other.n;
+      errorState = other.errorState;
     }
 
@@ -87,4 +95,18 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      return new OnlineMeanSquaredErrorCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs	(revision 14293)
@@ -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,10 @@
       originalVarianceCalculator = new OnlineMeanAndVarianceCalculator();
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    public OnlineNormalizedMeanSquaredErrorCalculator(OnlineMeanAndVarianceCalculator meanSquaredErrorCalculator, OnlineMeanAndVarianceCalculator originalVarianceCalculator) {
+      this.meanSquaredErrorCalculator = meanSquaredErrorCalculator;
+      this.originalVarianceCalculator = originalVarianceCalculator;
     }
 
@@ -92,4 +99,22 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var meanSquaredErrorCalculatorClone = (OnlineMeanAndVarianceCalculator)meanSquaredErrorCalculator.Clone();
+      var originalVarianceCalculatorClone = (OnlineMeanAndVarianceCalculator)originalVarianceCalculator.Clone();
+      return new OnlineNormalizedMeanSquaredErrorCalculator(meanSquaredErrorCalculatorClone, originalVarianceCalculatorClone);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        var meanSquaredErrorCalculatorClone = (OnlineMeanAndVarianceCalculator)meanSquaredErrorCalculator.Clone(cloner);
+        var originalVarianceCalculatorClone = (OnlineMeanAndVarianceCalculator)originalVarianceCalculator.Clone(cloner);
+        clone = new OnlineNormalizedMeanSquaredErrorCalculator(meanSquaredErrorCalculatorClone, originalVarianceCalculatorClone);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs	(revision 14293)
@@ -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,11 @@
 
     public OnlinePearsonsRCalculator() { }
+
+    // private constructor used internally by the Clone() method
+    private OnlinePearsonsRCalculator(OnlineCovarianceCalculator covCalculator, OnlineMeanAndVarianceCalculator sxCalculator, OnlineMeanAndVarianceCalculator syCalculator) {
+      this.covCalculator = covCalculator;
+      this.sxCalculator = sxCalculator;
+      this.syCalculator = syCalculator;
+    }
 
     #region IOnlineCalculator Members
@@ -91,4 +98,24 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var covCalculatorClone = (OnlineCovarianceCalculator)covCalculator.Clone();
+      var sxCalculatorClone = (OnlineMeanAndVarianceCalculator)sxCalculator.Clone();
+      var syCalculatorClone = (OnlineMeanAndVarianceCalculator)syCalculator.Clone();
+      return new OnlinePearsonsRCalculator(covCalculatorClone, sxCalculatorClone, syCalculatorClone);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        var covCalculatorClone = (OnlineCovarianceCalculator)covCalculator.Clone(cloner);
+        var sxCalculatorClone = (OnlineMeanAndVarianceCalculator)sxCalculator.Clone(cloner);
+        var syCalculatorClone = (OnlineMeanAndVarianceCalculator)syCalculator.Clone(cloner);
+        clone = new OnlinePearsonsRCalculator(covCalculatorClone, sxCalculatorClone, syCalculatorClone);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs	(revision 14293)
@@ -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() { }
+
+    private OnlinePearsonsRSquaredCalculator(OnlinePearsonsRCalculator rCalculator) {
+      this.rCalculator = rCalculator;
+    }
 
     #region IOnlineCalculator Members
@@ -59,4 +63,20 @@
       return r * r;
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var rCalculatorClone = (OnlinePearsonsRCalculator)rCalculator.Clone();
+      return new OnlinePearsonsRSquaredCalculator(rCalculatorClone);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        var rCalculatorClone = (OnlinePearsonsRCalculator)rCalculator.Clone(cloner);
+        clone = new OnlinePearsonsRSquaredCalculator(rCalculatorClone);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs	(revision 14293)
@@ -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,10 @@
       unbiasedEstimatorMeanCalculator = new OnlineMeanAndVarianceCalculator();
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    private OnlineTheilsUStatisticCalculator(OnlineMeanAndVarianceCalculator squaredErrorMeanCalculator, OnlineMeanAndVarianceCalculator unbiasedEstimatorMeanCalculator) {
+      this.squaredErrorMeanCalculator = squaredErrorMeanCalculator;
+      this.unbiasedEstimatorMeanCalculator = unbiasedEstimatorMeanCalculator;
     }
 
@@ -125,4 +132,22 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      var squaredErrorMeanCalculatorClone = (OnlineMeanAndVarianceCalculator)squaredErrorMeanCalculator.Clone();
+      var unbiasedEstimatorMeanCalculatorClone = (OnlineMeanAndVarianceCalculator)unbiasedEstimatorMeanCalculator.Clone();
+      return new OnlineTheilsUStatisticCalculator(squaredErrorMeanCalculatorClone, unbiasedEstimatorMeanCalculatorClone);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        var squaredErrorMeanCalculatorClone = (OnlineMeanAndVarianceCalculator)squaredErrorMeanCalculator.Clone(cloner);
+        var unbiasedEstimatorMeanCalculatorClone = (OnlineMeanAndVarianceCalculator)unbiasedEstimatorMeanCalculator.Clone(cloner);
+        clone = new OnlineTheilsUStatisticCalculator(squaredErrorMeanCalculatorClone, unbiasedEstimatorMeanCalculatorClone);
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs	(revision 14292)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs	(revision 14293)
@@ -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,12 @@
     public OnlineWeightedDirectionalSymmetryCalculator() {
       Reset();
+    }
+
+    // private constructor used internally by the Clone() method
+    private OnlineWeightedDirectionalSymmetryCalculator(OnlineWeightedDirectionalSymmetryCalculator other) {
+      n = other.n;
+      correctSum = other.correctSum;
+      incorrectSum = other.incorrectSum;
+      errorState = other.errorState;
     }
 
@@ -118,4 +126,18 @@
       }
     }
+
+    // IDeepCloneable members
+    public object Clone() {
+      return new OnlineWeightedDirectionalSymmetryCalculator(this);
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      var clone = cloner.GetClone(this);
+      if (clone == null) {
+        clone = (IDeepCloneable)this.Clone();
+        cloner.RegisterClonedObject(this, clone);
+      }
+      return clone;
+    }
   }
 }
