Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression-3.3.csproj
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression-3.3.csproj	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression-3.3.csproj	(revision 5275)
@@ -92,4 +92,49 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="ALGLIB-3.1.0">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\ALGLIB-3.1.0.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.ALGLIB-3.1.0">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.ALGLIB-3.1.0.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Analysis-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Analysis-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Operators-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Operators-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Optimization-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Parameters-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Parameters-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Persistence-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Persistence-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Random-3.3">
+      <HintPath>..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Random-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core">
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Analyzer/ValidationBestScaledSymbolicVectorRegressionSolutionAnalyzer.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Analyzer/ValidationBestScaledSymbolicVectorRegressionSolutionAnalyzer.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Analyzer/ValidationBestScaledSymbolicVectorRegressionSolutionAnalyzer.cs	(revision 5275)
@@ -33,4 +33,5 @@
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Interfaces;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Analyzers {
@@ -133,5 +134,9 @@
     }
     #endregion
-
+    [StorableConstructor]
+    protected ValidationBestScaledSymbolicVectorRegressionSolutionAnalyzer(bool deserializing) : base(deserializing) { }
+    protected ValidationBestScaledSymbolicVectorRegressionSolutionAnalyzer(ValidationBestScaledSymbolicVectorRegressionSolutionAnalyzer original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public ValidationBestScaledSymbolicVectorRegressionSolutionAnalyzer()
       : base() {
@@ -151,5 +156,8 @@
       Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName, "The result collection where the best symbolic regression solution should be stored."));
       Parameters.Add(new LookupParameter<DoubleValue>(BestKnownQualityParameterName, "The best known (validation) quality achieved on the data set."));
-
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ValidationBestScaledSymbolicVectorRegressionSolutionAnalyzer(this, cloner);
     }
 
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/MultiObjectiveSymbolicVectorRegressionEvaluator.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/MultiObjectiveSymbolicVectorRegressionEvaluator.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/MultiObjectiveSymbolicVectorRegressionEvaluator.cs	(revision 5275)
@@ -32,4 +32,5 @@
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Interfaces;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Evaluators {
@@ -42,5 +43,9 @@
     }
     #endregion
-    public MultiObjectiveSymbolicVectorRegressionEvaluator(bool deserializing) : base(deserializing) { }
+    [StorableConstructor]
+    protected MultiObjectiveSymbolicVectorRegressionEvaluator(bool deserializing) : base(deserializing) { }
+    protected MultiObjectiveSymbolicVectorRegressionEvaluator(MultiObjectiveSymbolicVectorRegressionEvaluator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public MultiObjectiveSymbolicVectorRegressionEvaluator()
       : base() {
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/PartialDerivativeEvaluator.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/PartialDerivativeEvaluator.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/PartialDerivativeEvaluator.cs	(revision 5275)
@@ -39,9 +39,15 @@
   public class PartialDerivativeEvaluator : SingleObjectiveSymbolicVectorRegressionEvaluator {
 
-    public PartialDerivativeEvaluator(bool deserializing) : base(deserializing) { }
+    [StorableConstructor]
+    protected PartialDerivativeEvaluator(bool deserializing) : base(deserializing) { }
+    protected PartialDerivativeEvaluator(PartialDerivativeEvaluator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public PartialDerivativeEvaluator()
       : base() {
     }
-
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PartialDerivativeEvaluator(this, cloner);
+    }
     public override double Evaluate(SymbolicExpressionTree tree, ISymbolicExpressionTreeInterpreter interpreter, MultiVariateDataAnalysisProblemData problemData, IEnumerable<string> targetVariables, IEnumerable<int> rows, DoubleArray lowerEstimationBound, DoubleArray upperEstimationBound) {
 
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SingleObjectiveSymbolicVectorRegressionEvaluator.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SingleObjectiveSymbolicVectorRegressionEvaluator.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SingleObjectiveSymbolicVectorRegressionEvaluator.cs	(revision 5275)
@@ -32,4 +32,5 @@
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Interfaces;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Evaluators {
@@ -42,10 +43,13 @@
     }
     #endregion
-    public SingleObjectiveSymbolicVectorRegressionEvaluator(bool deserializing) : base(deserializing) { }
+    [StorableConstructor]
+    protected SingleObjectiveSymbolicVectorRegressionEvaluator(bool deserializing) : base(deserializing) { }
+    protected SingleObjectiveSymbolicVectorRegressionEvaluator(SingleObjectiveSymbolicVectorRegressionEvaluator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public SingleObjectiveSymbolicVectorRegressionEvaluator()
       : base() {
       Parameters.Add(new LookupParameter<DoubleValue>(QualityParameterName, "The quality of the symbolic vector regression solution."));
     }
-
 
     public override IOperation Apply() {
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicRegressionNormalizedMeanSquaredErrorEvaluator.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicRegressionNormalizedMeanSquaredErrorEvaluator.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicRegressionNormalizedMeanSquaredErrorEvaluator.cs	(revision 5275)
@@ -29,4 +29,5 @@
 using HeuristicLab.Problems.DataAnalysis.Evaluators;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis.Regression.Symbolic {
@@ -34,8 +35,15 @@
   [StorableClass]
   public class SymbolicRegressionNormalizedMeanSquaredErrorEvaluator : SingleObjectiveSymbolicRegressionEvaluator {
+    [StorableConstructor]
+    protected SymbolicRegressionNormalizedMeanSquaredErrorEvaluator(bool deserializing) : base(deserializing) { }
+    protected SymbolicRegressionNormalizedMeanSquaredErrorEvaluator(SymbolicRegressionNormalizedMeanSquaredErrorEvaluator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public SymbolicRegressionNormalizedMeanSquaredErrorEvaluator()
       : base() {
     }
-
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SymbolicRegressionNormalizedMeanSquaredErrorEvaluator(this, cloner);
+    }
     public override double Evaluate(ISymbolicExpressionTreeInterpreter interpreter, SymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, Dataset dataset, string targetVariable, IEnumerable<int> rows) {
       double nmse = Calculate(interpreter, solution, lowerEstimationLimit, upperEstimationLimit, dataset, targetVariable, rows);
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionEvaluator.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionEvaluator.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionEvaluator.cs	(revision 5275)
@@ -31,4 +31,5 @@
 using HeuristicLab.Problems.DataAnalysis.Regression;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Evaluators {
@@ -105,5 +106,9 @@
     #endregion
 
-    public SymbolicVectorRegressionEvaluator(bool deserializing) : base(deserializing) { }
+    [StorableConstructor]
+    protected SymbolicVectorRegressionEvaluator(bool deserializing) : base(deserializing) { }
+    protected SymbolicVectorRegressionEvaluator(SymbolicVectorRegressionEvaluator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public SymbolicVectorRegressionEvaluator()
       : base() {
@@ -118,5 +123,4 @@
       Parameters.Add(new ValueParameter<PercentValue>(RelativeNumberOfEvaluatedSamplesParameterName, "The relative number of samples of the dataset partition, which should be randomly chosen for evaluation between the start and end index.", new PercentValue(1)));
     }
-
     public static IEnumerable<int> GenerateRowsToEvaluate(int seed, double relativeAmount, int start, int end) {
       if (end < start) throw new ArgumentException("Start value is larger than end value.");
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionNormalizedMseEvaluator.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionNormalizedMseEvaluator.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionNormalizedMseEvaluator.cs	(revision 5275)
@@ -30,4 +30,5 @@
 using HeuristicLab.Problems.DataAnalysis.Regression.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Evaluators {
@@ -37,7 +38,14 @@
 
 
-    public SymbolicVectorRegressionNormalizedMseEvaluator(bool deserializing) : base(deserializing) { }
+    [StorableConstructor]
+    protected SymbolicVectorRegressionNormalizedMseEvaluator(bool deserializing) : base(deserializing) { }
+    protected SymbolicVectorRegressionNormalizedMseEvaluator(SymbolicVectorRegressionNormalizedMseEvaluator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public SymbolicVectorRegressionNormalizedMseEvaluator()
       : base() {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SymbolicVectorRegressionNormalizedMseEvaluator(this, cloner);
     }
 
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionScaledMseEvaluator.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionScaledMseEvaluator.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionScaledMseEvaluator.cs	(revision 5275)
@@ -30,4 +30,5 @@
 using HeuristicLab.Problems.DataAnalysis.Regression.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Evaluators {
@@ -48,4 +49,9 @@
     #endregion
 
+    [StorableConstructor]
+    protected SymbolicVectorRegressionScaledMseEvaluator(bool deserializing) : base(deserializing) { }
+    protected SymbolicVectorRegressionScaledMseEvaluator(SymbolicVectorRegressionScaledMseEvaluator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public SymbolicVectorRegressionScaledMseEvaluator()
       : base() {
@@ -53,5 +59,7 @@
       Parameters.Add(new LookupParameter<DoubleArray>(BetaParameterName, "The beta parameter for linear scaling."));
     }
-
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SymbolicVectorRegressionScaledMseEvaluator(this, cloner);
+    }
     public override double[] Evaluate(SymbolicExpressionTree tree, ISymbolicExpressionTreeInterpreter interpreter, MultiVariateDataAnalysisProblemData problemData, IEnumerable<string> targetVariables, IEnumerable<int> rows, DoubleArray lowerEstimationBound, DoubleArray upperEstimationBound) {
       List<string> targetVariablesList = targetVariables.ToList();
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionScaledNormalizedMseEvaluator.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionScaledNormalizedMseEvaluator.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/Evaluators/SymbolicVectorRegressionScaledNormalizedMseEvaluator.cs	(revision 5275)
@@ -30,4 +30,5 @@
 using HeuristicLab.Problems.DataAnalysis.Regression.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic.Evaluators {
@@ -48,4 +49,9 @@
     #endregion
 
+    [StorableConstructor]
+    protected SymbolicVectorRegressionScaledNormalizedMseEvaluator(bool deserializing) : base(deserializing) { }
+    protected SymbolicVectorRegressionScaledNormalizedMseEvaluator(SymbolicVectorRegressionScaledNormalizedMseEvaluator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public SymbolicVectorRegressionScaledNormalizedMseEvaluator()
       : base() {
@@ -53,5 +59,7 @@
       Parameters.Add(new LookupParameter<DoubleArray>(BetaParameterName, "The beta parameter for linear scaling."));
     }
-
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SymbolicVectorRegressionScaledNormalizedMseEvaluator(this, cloner);
+    }
     public override double Evaluate(SymbolicExpressionTree tree, ISymbolicExpressionTreeInterpreter interpreter, MultiVariateDataAnalysisProblemData problemData, IEnumerable<string> targetVariables, IEnumerable<int> rows, DoubleArray lowerEstimationBound, DoubleArray upperEstimationBound) {
       List<string> targetVariablesList = targetVariables.ToList();
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/MultiObjectiveSymbolicVectorRegressionProblem.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/MultiObjectiveSymbolicVectorRegressionProblem.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/MultiObjectiveSymbolicVectorRegressionProblem.cs	(revision 5275)
@@ -68,4 +68,8 @@
     [StorableConstructor]
     protected MultiObjectiveSymbolicVectorRegressionProblem(bool deserializing) : base(deserializing) { }
+    protected MultiObjectiveSymbolicVectorRegressionProblem(MultiObjectiveSymbolicVectorRegressionProblem original, Cloner cloner)
+      : base(original, cloner) {
+        Initialize();
+    }
     public MultiObjectiveSymbolicVectorRegressionProblem()
       : base() {
@@ -84,7 +88,5 @@
 
     public override IDeepCloneable Clone(Cloner cloner) {
-      MultiObjectiveSymbolicVectorRegressionProblem clone = (MultiObjectiveSymbolicVectorRegressionProblem)base.Clone(cloner);
-      clone.Initialize();
-      return clone;
+      return new MultiObjectiveSymbolicVectorRegressionProblem(this, cloner);
     }
 
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SingleObjectiveSymbolicVectorRegressionProblem.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SingleObjectiveSymbolicVectorRegressionProblem.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SingleObjectiveSymbolicVectorRegressionProblem.cs	(revision 5275)
@@ -75,4 +75,10 @@
     #endregion
 
+    [StorableConstructor]
+    private SingleObjectiveSymbolicVectorRegressionProblem(bool deserializing) : base() { }
+    private SingleObjectiveSymbolicVectorRegressionProblem(SingleObjectiveSymbolicVectorRegressionProblem original, Cloner cloner)
+      : base(original, cloner) {
+        Initialize();
+    }
     public SingleObjectiveSymbolicVectorRegressionProblem()
       : base() {
@@ -87,18 +93,13 @@
     }
 
-    [StorableConstructor]
-    private SingleObjectiveSymbolicVectorRegressionProblem(bool deserializing) : base() { }
 
     [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserializationHook() {
+    private void AfterDeserialization() {
       Initialize();
     }
 
     public override IDeepCloneable Clone(Cloner cloner) {
-      SingleObjectiveSymbolicVectorRegressionProblem clone = (SingleObjectiveSymbolicVectorRegressionProblem)base.Clone(cloner);
-      clone.Initialize();
-      return clone;
+      return new SingleObjectiveSymbolicVectorRegressionProblem(this, cloner);
     }
-
     private void RegisterParameterValueEvents() {
       EvaluatorParameter.ValueChanged += new EventHandler(EvaluatorParameter_ValueChanged);
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SymbolicVectorRegressionGrammar.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SymbolicVectorRegressionGrammar.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SymbolicVectorRegressionGrammar.cs	(revision 5275)
@@ -33,12 +33,15 @@
   public class SymbolicVectorRegressionGrammar : MultiVariateExpressionGrammar {
     public SymbolicVectorRegressionGrammar() : this(1) { }
-
+    [StorableConstructor]
+    protected SymbolicVectorRegressionGrammar(bool deserializing) : base(deserializing) { }
+    protected SymbolicVectorRegressionGrammar(SymbolicVectorRegressionGrammar original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public SymbolicVectorRegressionGrammar(int dimension)
       : base(dimension) {
       Initialize();
     }
-
-    protected SymbolicVectorRegressionGrammar(SymbolicVectorRegressionGrammar original) : base(original.Dimension) {
-    // fill ???
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SymbolicVectorRegressionGrammar(this, cloner);
     }
 
@@ -115,10 +118,4 @@
       }
     }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      var clone = new SymbolicVectorRegressionGrammar(this);
-      cloner.RegisterClonedObject(this, clone);
-      return clone;
-    }
   }
 }
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SymbolicVectorRegressionProblem.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SymbolicVectorRegressionProblem.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SymbolicVectorRegressionProblem.cs	(revision 5275)
@@ -158,4 +158,10 @@
     [StorableConstructor]
     protected SymbolicVectorRegressionProblem(bool deserializing) : base(deserializing) { }
+    protected SymbolicVectorRegressionProblem(SymbolicVectorRegressionProblem original, Cloner cloner)
+      : base(original, cloner) {
+      operators = original.operators.Select(x => (IOperator)cloner.Clone(x)).ToList();
+      RegisterParameterEvents();
+      RegisterParameterValueEvents();
+    }
     public SymbolicVectorRegressionProblem()
       : base() {
@@ -184,5 +190,5 @@
 
     [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserializationHook() {
+    private void AfterDeserialization() {
       // BackwardsCompatibility3.3
       #region Backwards compatible code (remove with 3.4)
@@ -194,9 +200,5 @@
 
     public override IDeepCloneable Clone(Cloner cloner) {
-      SymbolicVectorRegressionProblem clone = (SymbolicVectorRegressionProblem)base.Clone(cloner);
-      clone.operators = operators.Select(x => (IOperator)cloner.Clone(x)).ToList();
-      clone.RegisterParameterEvents();
-      clone.RegisterParameterValueEvents();
-      return clone;
+      return new SymbolicVectorRegressionProblem(this, cloner);
     }
 
Index: branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SymbolicVectorRegressionSolutionLinearScaler.cs
===================================================================
--- branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SymbolicVectorRegressionSolutionLinearScaler.cs	(revision 5265)
+++ branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression/3.3/Symbolic/SymbolicVectorRegressionSolutionLinearScaler.cs	(revision 5275)
@@ -29,4 +29,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.DataAnalysis.MultiVariate.Regression.Symbolic {
@@ -54,5 +55,9 @@
       get { return (ILookupParameter<DoubleArray>)Parameters[BetaParameterName]; }
     }
-
+    [StorableConstructor]
+    protected SymbolicVectorRegressionSolutionLinearScaler(bool deserializing) : base(deserializing) { }
+    protected SymbolicVectorRegressionSolutionLinearScaler(SymbolicVectorRegressionSolutionLinearScaler original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public SymbolicVectorRegressionSolutionLinearScaler()
       : base() {
@@ -62,5 +67,7 @@
       Parameters.Add(new LookupParameter<DoubleArray>(BetaParameterName, "Beta parameter for linear transformation."));
     }
-
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new SymbolicVectorRegressionSolutionLinearScaler(this, cloner);
+    }
     public override IOperation Apply() {
       SymbolicExpressionTree tree = SymbolicExpressionTreeParameter.ActualValue;
