Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/ClassificationPerformanceMeasuresCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/ClassificationPerformanceMeasuresCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/ClassificationPerformanceMeasuresCalculator.cs	(revision 14801)
@@ -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 : DeepCloneable {
 
     public ClassificationPerformanceMeasuresCalculator(string positiveClassName, double positiveClassValue) {
@@ -32,4 +31,18 @@
       this.positiveClassValue = positiveClassValue;
       Reset();
+    }
+
+    protected ClassificationPerformanceMeasuresCalculator(ClassificationPerformanceMeasuresCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      positiveClassName = original.positiveClassName;
+      positiveClassValue = original.positiveClassValue;
+      truePositiveCount = original.truePositiveCount;
+      falsePositiveCount = original.falsePositiveCount;
+      trueNegativeCount = original.trueNegativeCount;
+      falseNegativeCount = original.falseNegativeCount;
+      errorState = original.errorState;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ClassificationPerformanceMeasuresCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineAccuracyCalculator.cs	(revision 14801)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineAccuracyCalculator : IOnlineCalculator {
+  public class OnlineAccuracyCalculator : DeepCloneable, IOnlineCalculator {
 
     private int correctlyClassified;
@@ -38,4 +38,16 @@
       Reset();
     }
+
+    protected OnlineAccuracyCalculator(OnlineAccuracyCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      correctlyClassified = original.correctlyClassified;
+      n = original.n;
+      errorState = original.errorState;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineAccuracyCalculator(this, cloner);
+    }
+
 
     #region IOnlineCalculator Members
@@ -90,4 +102,5 @@
       }
     }
+
   }
 }
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineBoundedMeanSquaredErrorCalculator.cs	(revision 14801)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineBoundedMeanSquaredErrorCalculator : IOnlineCalculator {
+  public class OnlineBoundedMeanSquaredErrorCalculator : DeepCloneable, IOnlineCalculator {
 
     private double errorSum;
@@ -38,8 +39,20 @@
 
 
-    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)
+      : base(original, cloner) {
+      LowerBound = original.LowerBound;
+      UpperBound = original.UpperBound;
+      n = original.n;
+      errorSum = original.errorSum;
+      errorState = original.ErrorState;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineBoundedMeanSquaredErrorCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineCovarianceCalculator.cs	(revision 14801)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineCovarianceCalculator : IOnlineCalculator {
+  public class OnlineCovarianceCalculator : DeepCloneable, IOnlineCalculator {
 
     private double xMean, yMean, Cn;
@@ -36,4 +37,17 @@
     public OnlineCovarianceCalculator() {
       Reset();
+    }
+
+    protected OnlineCovarianceCalculator(OnlineCovarianceCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      Cn = original.Cn;
+      xMean = original.xMean;
+      yMean = original.yMean;
+      n = original.n;
+      errorState = original.errorState;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineCovarianceCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs	(revision 14801)
@@ -26,5 +26,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineDirectionalSymmetryCalculator : IOnlineTimeSeriesCalculator {
+  public class OnlineDirectionalSymmetryCalculator : DeepCloneable, IOnlineTimeSeriesCalculator {
     private int n;
     private int nCorrect;
@@ -39,4 +39,15 @@
     public OnlineDirectionalSymmetryCalculator() {
       Reset();
+    }
+
+    protected OnlineDirectionalSymmetryCalculator(OnlineDirectionalSymmetryCalculator original, Cloner cloner = null)
+      : base(original, cloner) {
+      n = original.n;
+      nCorrect = original.nCorrect;
+      errorState = original.errorState;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineDirectionalSymmetryCalculator(this, cloner);
     }
 
@@ -94,5 +105,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();
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineLinearScalingParameterCalculator.cs	(revision 14801)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineLinearScalingParameterCalculator {
+  public class OnlineLinearScalingParameterCalculator : DeepCloneable {
 
     /// <summary>
@@ -55,7 +55,7 @@
     }
 
-    private OnlineMeanAndVarianceCalculator targetMeanCalculator;
-    private OnlineMeanAndVarianceCalculator originalMeanAndVarianceCalculator;
-    private OnlineCovarianceCalculator originalTargetCovarianceCalculator;
+    private readonly OnlineMeanAndVarianceCalculator targetMeanCalculator;
+    private readonly OnlineMeanAndVarianceCalculator originalMeanAndVarianceCalculator;
+    private readonly OnlineCovarianceCalculator originalTargetCovarianceCalculator;
 
     public OnlineLinearScalingParameterCalculator() {
@@ -65,4 +65,16 @@
       Reset();
     }
+
+    protected OnlineLinearScalingParameterCalculator(OnlineLinearScalingParameterCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      targetMeanCalculator = cloner.Clone(original.targetMeanCalculator);
+      originalMeanAndVarianceCalculator = cloner.Clone(original.originalMeanAndVarianceCalculator);
+      originalTargetCovarianceCalculator = cloner.Clone(original.originalTargetCovarianceCalculator);
+      // do not reset the calculators here
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineLinearScalingParameterCalculator(this, cloner);
+    }
+
 
     public void Reset() {
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMaxAbsoluteErrorCalculator.cs	(revision 14801)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMaxAbsoluteErrorCalculator : IOnlineCalculator {
+  public class OnlineMaxAbsoluteErrorCalculator : DeepCloneable, IOnlineCalculator {
 
     private double mae;
@@ -36,4 +37,14 @@
     public OnlineMaxAbsoluteErrorCalculator() {
       Reset();
+    }
+
+    protected OnlineMaxAbsoluteErrorCalculator(OnlineMaxAbsoluteErrorCalculator original, Cloner cloner = null)
+      : base(original, cloner) {
+      mae = original.mae;
+      n = original.n;
+      errorState = original.errorState;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineMaxAbsoluteErrorCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs	(revision 14801)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanAbsoluteErrorCalculator : IOnlineCalculator {
+  public class OnlineMeanAbsoluteErrorCalculator : DeepCloneable, IOnlineCalculator {
 
     private double sae;
@@ -36,4 +37,14 @@
     public OnlineMeanAbsoluteErrorCalculator() {
       Reset();
+    }
+
+    protected OnlineMeanAbsoluteErrorCalculator(OnlineMeanAbsoluteErrorCalculator original, Cloner cloner = null)
+      : base(original, cloner) {
+      sae = original.sae;
+      n = original.n;
+      errorState = original.errorState;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineMeanAbsoluteErrorCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsolutePercentageErrorCalculator.cs	(revision 14801)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanAbsolutePercentageErrorCalculator : IOnlineCalculator {
+  public class OnlineMeanAbsolutePercentageErrorCalculator : DeepCloneable, IOnlineCalculator {
 
     private double sre;
@@ -37,4 +37,15 @@
     public OnlineMeanAbsolutePercentageErrorCalculator() {
       Reset();
+    }
+
+    protected OnlineMeanAbsolutePercentageErrorCalculator(OnlineMeanAbsolutePercentageErrorCalculator original, Cloner cloner = null)
+      : base(original, cloner) {
+      sre = original.sre;
+      n = original.n;
+      errorState = original.errorState;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineMeanAbsolutePercentageErrorCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAndVarianceCalculator.cs	(revision 14801)
@@ -21,7 +21,8 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanAndVarianceCalculator {
+  public class OnlineMeanAndVarianceCalculator : DeepCloneable {
 
     private double m_oldM, m_newM, m_oldS, m_newS;
@@ -64,4 +65,18 @@
     public OnlineMeanAndVarianceCalculator() {
       Reset();
+    }
+
+    protected OnlineMeanAndVarianceCalculator(OnlineMeanAndVarianceCalculator original, Cloner cloner = null)
+      : base(original, cloner) {
+      m_oldS = original.m_oldS;
+      m_oldM = original.m_oldM;
+      m_newS = original.m_newS;
+      m_newM = original.m_newM;
+      n = original.n;
+      errorState = original.errorState;
+      varianceErrorState = original.varianceErrorState;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineMeanAndVarianceCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanErrorCalculator.cs	(revision 14801)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanErrorCalculator : IOnlineCalculator {
+  public class OnlineMeanErrorCalculator : DeepCloneable, IOnlineCalculator {
 
     private readonly OnlineMeanAndVarianceCalculator meanAndVarianceCalculator;
@@ -34,4 +35,12 @@
       meanAndVarianceCalculator = new OnlineMeanAndVarianceCalculator();
       Reset();
+    }
+
+    protected OnlineMeanErrorCalculator(OnlineMeanErrorCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      meanAndVarianceCalculator = cloner.Clone(original.meanAndVarianceCalculator);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineMeanErrorCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanSquaredErrorCalculator.cs	(revision 14801)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineMeanSquaredErrorCalculator : IOnlineCalculator {
+  public class OnlineMeanSquaredErrorCalculator : DeepCloneable, IOnlineCalculator {
 
     private double sse;
@@ -36,4 +37,14 @@
     public OnlineMeanSquaredErrorCalculator() {
       Reset();
+    }
+
+    protected OnlineMeanSquaredErrorCalculator(OnlineMeanSquaredErrorCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      sse = original.sse;
+      n = original.n;
+      errorState = original.errorState;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineMeanSquaredErrorCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineNormalizedMeanSquaredErrorCalculator.cs	(revision 14801)
@@ -22,7 +22,8 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineNormalizedMeanSquaredErrorCalculator : IOnlineCalculator {
+  public class OnlineNormalizedMeanSquaredErrorCalculator : DeepCloneable, IOnlineCalculator {
     private OnlineMeanAndVarianceCalculator meanSquaredErrorCalculator;
     private OnlineMeanAndVarianceCalculator originalVarianceCalculator;
@@ -40,4 +41,13 @@
       originalVarianceCalculator = new OnlineMeanAndVarianceCalculator();
       Reset();
+    }
+
+    protected OnlineNormalizedMeanSquaredErrorCalculator(OnlineNormalizedMeanSquaredErrorCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      meanSquaredErrorCalculator = cloner.Clone(original.meanSquaredErrorCalculator);
+      originalVarianceCalculator = cloner.Clone(original.originalVarianceCalculator);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineNormalizedMeanSquaredErrorCalculator(this, cloner);
     }
 
@@ -92,4 +102,6 @@
       }
     }
+
+
   }
 }
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRCalculator.cs	(revision 14801)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlinePearsonsRCalculator : IOnlineCalculator {
+  public class OnlinePearsonsRCalculator : DeepCloneable, IOnlineCalculator {
     private OnlineCovarianceCalculator covCalculator = new OnlineCovarianceCalculator();
     private OnlineMeanAndVarianceCalculator sxCalculator = new OnlineMeanAndVarianceCalculator();
@@ -46,4 +46,14 @@
 
     public OnlinePearsonsRCalculator() { }
+
+    protected OnlinePearsonsRCalculator(OnlinePearsonsRCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      covCalculator = cloner.Clone(original.covCalculator);
+      sxCalculator = cloner.Clone(original.sxCalculator);
+      syCalculator = cloner.Clone(original.syCalculator);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlinePearsonsRCalculator(this, cloner);
+    }
 
     #region IOnlineCalculator Members
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlinePearsonsRSquaredCalculator.cs	(revision 14801)
@@ -26,5 +26,5 @@
 namespace HeuristicLab.Problems.DataAnalysis {
   [Obsolete("Use OnlinePearsonsRCalculator directly")]
-  public class OnlinePearsonsRSquaredCalculator : IOnlineCalculator {
+  public class OnlinePearsonsRSquaredCalculator : DeepCloneable, IOnlineCalculator {
     private readonly OnlinePearsonsRCalculator rCalculator = new OnlinePearsonsRCalculator();
 
@@ -37,4 +37,12 @@
 
     public OnlinePearsonsRSquaredCalculator() { }
+
+    protected OnlinePearsonsRSquaredCalculator(OnlinePearsonsRSquaredCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      rCalculator = cloner.Clone(original.rCalculator);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlinePearsonsRSquaredCalculator(this, cloner);
+    }
 
     #region IOnlineCalculator Members
@@ -59,4 +67,6 @@
       return r * r;
     }
+
+
   }
 }
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs	(revision 14801)
@@ -22,9 +22,10 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineTheilsUStatisticCalculator : IOnlineTimeSeriesCalculator {
-    private OnlineMeanAndVarianceCalculator squaredErrorMeanCalculator;
-    private OnlineMeanAndVarianceCalculator unbiasedEstimatorMeanCalculator;
+  public class OnlineTheilsUStatisticCalculator : DeepCloneable, IOnlineTimeSeriesCalculator {
+    private readonly OnlineMeanAndVarianceCalculator squaredErrorMeanCalculator;
+    private readonly OnlineMeanAndVarianceCalculator unbiasedEstimatorMeanCalculator;
 
     public double TheilsUStatistic {
@@ -43,4 +44,13 @@
       unbiasedEstimatorMeanCalculator = new OnlineMeanAndVarianceCalculator();
       Reset();
+    }
+
+    protected OnlineTheilsUStatisticCalculator(OnlineTheilsUStatisticCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      squaredErrorMeanCalculator = cloner.Clone(original.squaredErrorMeanCalculator);
+      unbiasedEstimatorMeanCalculator = cloner.Clone(original.unbiasedEstimatorMeanCalculator);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineTheilsUStatisticCalculator(this, cloner);
     }
 
Index: stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs
===================================================================
--- stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs	(revision 14303)
+++ stable/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs	(revision 14801)
@@ -26,5 +26,5 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineWeightedDirectionalSymmetryCalculator : IOnlineTimeSeriesCalculator {
+  public class OnlineWeightedDirectionalSymmetryCalculator : DeepCloneable, IOnlineTimeSeriesCalculator {
     private int n;
     private double correctSum;
@@ -40,4 +40,16 @@
     public OnlineWeightedDirectionalSymmetryCalculator() {
       Reset();
+    }
+
+    protected OnlineWeightedDirectionalSymmetryCalculator(OnlineWeightedDirectionalSymmetryCalculator original, Cloner cloner)
+      : base(original, cloner) {
+      n = original.n;
+      correctSum = original.correctSum;
+      incorrectSum = original.incorrectSum;
+      errorState = original.errorState;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new OnlineWeightedDirectionalSymmetryCalculator(this, cloner);
     }
 
