Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs	(revision 3484)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/SymbolicRegressionSolution.cs	(revision 3485)
@@ -36,4 +36,5 @@
   [StorableClass]
   public sealed class SymbolicRegressionSolution : DataAnalysisSolution {
+    [Storable]
     private SymbolicRegressionModel model;
     public SymbolicRegressionModel Model {
@@ -52,5 +53,4 @@
       : base(problemData) {
       this.model = model;
-      RecalculateEstimatedValues();
     }
 
@@ -75,4 +75,5 @@
     public override IEnumerable<double> EstimatedValues {
       get {
+        if (estimatedValues == null) RecalculateEstimatedValues();
         return estimatedValues.AsEnumerable();
       }
@@ -81,4 +82,5 @@
     public override IEnumerable<double> EstimatedTrainingValues {
       get {
+        if (estimatedValues == null) RecalculateEstimatedValues();
         int start = ProblemData.TrainingSamplesStart.Value;
         int n = ProblemData.TrainingSamplesEnd.Value - start;
@@ -89,4 +91,5 @@
     public override IEnumerable<double> EstimatedTestValues {
       get {
+        if (estimatedValues == null) RecalculateEstimatedValues();
         int start = ProblemData.TestSamplesStart.Value;
         int n = ProblemData.TestSamplesEnd.Value - start;
@@ -94,4 +97,10 @@
       }
     }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      SymbolicRegressionSolution clone = (SymbolicRegressionSolution)base.Clone(cloner);
+      clone.model = (SymbolicRegressionModel)model.Clone(cloner);
+      return clone;
+    }
   }
 }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Constant.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Constant.cs	(revision 3484)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Constant.cs	(revision 3485)
@@ -33,4 +33,5 @@
   public sealed class Constant : Symbol {
     #region Propeties
+    [Storable]
     private double minValue;
     public double MinValue {
@@ -38,4 +39,5 @@
       set { minValue = value; }
     }
+    [Storable]
     private double maxValue;
     public double MaxValue {
@@ -51,4 +53,11 @@
       return new ConstantTreeNode(this);
     }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      Constant clone = (Constant) base.Clone(cloner);
+      clone.minValue = minValue;
+      clone.maxValue = maxValue;
+      return clone;
+    }
   }
 }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/ConstantTreeNode.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/ConstantTreeNode.cs	(revision 3484)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/ConstantTreeNode.cs	(revision 3485)
@@ -41,4 +41,7 @@
       set { constantValue = value; }
     }
+
+    private ConstantTreeNode() : base() { }
+
     // copy constructor
     private ConstantTreeNode(ConstantTreeNode original)
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Variable.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Variable.cs	(revision 3484)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Variable.cs	(revision 3485)
@@ -36,12 +36,12 @@
   public sealed class Variable : Symbol {
     #region Properties
+    [Storable]
     private double weightNu;
-    [Storable]
     public double WeightNu {
       get { return weightNu; }
       set { weightNu = value; }
     }
+    [Storable]
     private double weightSigma;
-    [Storable]
     public double WeightSigma {
       get { return weightSigma; }
@@ -51,6 +51,6 @@
       }
     }
+    [Storable]
     private List<string> variableNames;
-    [Storable]
     public IEnumerable<string> VariableNames {
       get { return variableNames; }
@@ -72,4 +72,12 @@
       return new VariableTreeNode(this);
     }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      Variable clone = (Variable)base.Clone(cloner);
+      clone.weightNu = weightNu;
+      clone.weightSigma = weightSigma;
+      clone.variableNames = new List<string>(variableNames);
+      return clone;
+    }
   }
 }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableTreeNode.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableTreeNode.cs	(revision 3484)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableTreeNode.cs	(revision 3485)
@@ -34,16 +34,19 @@
       get { return (Variable)base.Symbol; }
     }
+    [Storable]
     private double weight;
-    [Storable]
     public double Weight {
       get { return weight; }
       set { weight = value; }
     }
+    [Storable]
     private string variableName;
-    [Storable]
     public string VariableName {
       get { return variableName; }
       set { variableName = value; }
     }
+
+
+    private VariableTreeNode() { }
 
     // copy constructor
