Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/Allele.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/Allele.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/Allele.cs	(revision 4677)
@@ -53,4 +53,16 @@
     #endregion
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected Allele(bool deserializing) : base(deserializing) { }
+    protected Allele(Allele original, Cloner cloner)
+      : base(original, cloner) {
+      this.id = original.id;
+      this.impact = original.impact;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Allele(this, cloner);
+    }
+    #endregion
     public Allele()
       : base() {
@@ -68,13 +80,4 @@
       this.impact = impact;
     }
-    [StorableConstructor]
-    protected Allele(bool deserializing) : base(deserializing) { }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      Allele clone = (Allele)base.Clone(cloner);
-      clone.id = id;
-      clone.impact = impact;
-      return clone;
-    }
 
     public override string ToString() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequency.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequency.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequency.cs	(revision 4677)
@@ -89,4 +89,20 @@
     #endregion
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected AlleleFrequency(bool deserializing) : base(deserializing) { }
+    protected AlleleFrequency(AlleleFrequency original, Cloner cloner)
+      : base(original, cloner) {
+      this.id = original.id;
+      this.frequency = original.frequency;
+      this.averageImpact = original.averageImpact;
+      this.averageSolutionQuality = original.averageSolutionQuality;
+      this.containedInBestKnownSolution = original.containedInBestKnownSolution;
+      this.containedInBestSolution = original.containedInBestSolution;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new AlleleFrequency(this, cloner);
+    }
+    #endregion
     public AlleleFrequency()
       : base() {
@@ -107,17 +123,4 @@
       this.containedInBestSolution = containedInBestSolution;
     }
-    [StorableConstructor]
-    protected AlleleFrequency(bool deserializing) : base(deserializing) { }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      AlleleFrequency clone = (AlleleFrequency)base.Clone(cloner);
-      clone.id = id;
-      clone.frequency = frequency;
-      clone.averageImpact = averageImpact;
-      clone.averageSolutionQuality = averageSolutionQuality;
-      clone.containedInBestKnownSolution = containedInBestKnownSolution;
-      clone.containedInBestSolution = containedInBestSolution;
-      return clone;
-    }
 
     public override string ToString() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequencyAnalyzer.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequencyAnalyzer.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequencyAnalyzer.cs	(revision 4677)
@@ -28,4 +28,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -61,4 +62,9 @@
     }
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected AlleleFrequencyAnalyzer(bool deserializing) : base(deserializing) { }
+    protected AlleleFrequencyAnalyzer(AlleleFrequencyAnalyzer<T> original, Cloner cloner) : base(original, cloner) { }
+    #endregion
     public AlleleFrequencyAnalyzer()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequencyCollection.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequencyCollection.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequencyCollection.cs	(revision 4677)
@@ -23,4 +23,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -31,8 +32,14 @@
   [StorableClass]
   public class AlleleFrequencyCollection : ReadOnlyItemCollection<AlleleFrequency> {
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected AlleleFrequencyCollection(bool deserializing) : base(deserializing) { }
+    protected AlleleFrequencyCollection(AlleleFrequencyCollection original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new AlleleFrequencyCollection(this, cloner);
+    }
+    #endregion
     public AlleleFrequencyCollection() : base() { }
     public AlleleFrequencyCollection(IEnumerable<AlleleFrequency> frequencies) : base(new ItemCollection<AlleleFrequency>(frequencies)) { }
-    [StorableConstructor]
-    protected AlleleFrequencyCollection(bool deserializing) : base(deserializing) { }
   }
 }
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequencyCollectionHistory.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequencyCollectionHistory.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/AlleleFrequencyCollectionHistory.cs	(revision 4677)
@@ -23,4 +23,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -31,8 +32,14 @@
   [StorableClass]
   public class AlleleFrequencyCollectionHistory : ItemCollection<AlleleFrequencyCollection> {
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected AlleleFrequencyCollectionHistory(bool deserializing) : base(deserializing) { }
+    protected AlleleFrequencyCollectionHistory(AlleleFrequencyCollectionHistory original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new AlleleFrequencyCollectionHistory(this, cloner);
+    }
+    #endregion
     public AlleleFrequencyCollectionHistory() : base() { }
     public AlleleFrequencyCollectionHistory(IEnumerable<AlleleFrequencyCollection> collections) : base(new ItemCollection<AlleleFrequencyCollection>(collections)) { }
-    [StorableConstructor]
-    protected AlleleFrequencyCollectionHistory(bool deserializing) : base(deserializing) { }
   }
 }
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestAverageWorstQualityAnalyzer.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestAverageWorstQualityAnalyzer.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestAverageWorstQualityAnalyzer.cs	(revision 4677)
@@ -82,4 +82,15 @@
     #endregion
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    private BestAverageWorstQualityAnalyzer(bool deserializing) : base(deserializing) { }
+    private BestAverageWorstQualityAnalyzer(BestAverageWorstQualityAnalyzer original, Cloner cloner)
+      : base(original, cloner) {
+      Initialize();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BestAverageWorstQualityAnalyzer(this, cloner);
+    }
+    #endregion
     public BestAverageWorstQualityAnalyzer()
       : base() {
@@ -151,16 +162,12 @@
       Initialize();
     }
-    [StorableConstructor]
-    private BestAverageWorstQualityAnalyzer(bool deserializing) : base() { }
 
     [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      Initialize();
+    }
+    
     private void Initialize() {
       QualityParameter.DepthChanged += new EventHandler(QualityParameter_DepthChanged);
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      BestAverageWorstQualityAnalyzer clone = (BestAverageWorstQualityAnalyzer)base.Clone(cloner);
-      clone.Initialize();
-      return clone;
     }
 
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestAverageWorstQualityCalculator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestAverageWorstQualityCalculator.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestAverageWorstQualityCalculator.cs	(revision 4677)
@@ -25,4 +25,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -49,4 +50,12 @@
     }
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    private BestAverageWorstQualityCalculator(bool deserializing) : base(deserializing) { }
+    private BestAverageWorstQualityCalculator(BestAverageWorstQualityCalculator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BestAverageWorstQualityCalculator(this, cloner);
+    }
+    #endregion
     public BestAverageWorstQualityCalculator()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestQualityMemorizer.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestQualityMemorizer.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestQualityMemorizer.cs	(revision 4677)
@@ -25,4 +25,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -43,4 +44,12 @@
     }
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected BestQualityMemorizer(bool deserializing) : base(deserializing) { }
+    protected BestQualityMemorizer(BestQualityMemorizer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BestQualityMemorizer(this, cloner);
+    }
+    #endregion
     public BestQualityMemorizer()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestScopeSolutionAnalyzer.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestScopeSolutionAnalyzer.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/BestScopeSolutionAnalyzer.cs	(revision 4677)
@@ -28,4 +28,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -55,4 +56,12 @@
     }
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected BestScopeSolutionAnalyzer(bool deserializing) : base(deserializing) { }
+    protected BestScopeSolutionAnalyzer(BestScopeSolutionAnalyzer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new BestScopeSolutionAnalyzer(this, cloner);
+    }
+    #endregion
     public BestScopeSolutionAnalyzer()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataRow.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataRow.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataRow.cs	(revision 4677)
@@ -66,4 +66,16 @@
     #endregion
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    private DataRow(bool deserializing) : base(deserializing) { }
+    private DataRow(DataRow original, Cloner cloner)
+      : base(original, cloner) {
+      this.VisualProperties = (DataRowVisualProperties)cloner.Clone(original.visualProperties);
+      this.values = new ObservableList<double>(original.values);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new DataRow(this, cloner);
+    }
+    #endregion
     public DataRow()
       : base() {
@@ -86,6 +98,4 @@
       values = new ObservableList<double>();
     }
-    [StorableConstructor]
-    private DataRow(bool deserializing) { }
 
     // BackwardsCompatibility3.3
@@ -96,12 +106,4 @@
     }
     #endregion
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      DataRow clone = new DataRow(Name, Description);
-      cloner.RegisterClonedObject(this, clone);
-      clone.VisualProperties = (DataRowVisualProperties)cloner.Clone(visualProperties);
-      clone.values.AddRange(values);
-      return clone;
-    }
 
     public event EventHandler VisualPropertiesChanged;
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataRowVisualProperties.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataRowVisualProperties.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataRowVisualProperties.cs	(revision 4677)
@@ -104,4 +104,18 @@
     #endregion
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected DataRowVisualProperties(bool deserializing) : base() { }
+    protected DataRowVisualProperties(DataRowVisualProperties original, Cloner cloner)
+      : base(original, cloner) {
+      this.chartType = original.chartType;
+      this.secondYAxis = original.secondYAxis;
+      this.color = original.color;
+      this.startIndexZero = original.startIndexZero;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new DataRowVisualProperties(this, cloner);
+    }
+    #endregion
     public DataRowVisualProperties() {
       chartType = DataRowChartType.Line;
@@ -116,15 +130,4 @@
       this.startIndexZero = startIndexZero;
     }
-    [StorableConstructor]
-    protected DataRowVisualProperties(bool deserializing) { }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      DataRowVisualProperties clone = (DataRowVisualProperties)base.Clone(cloner);
-      clone.chartType = chartType;
-      clone.secondYAxis = secondYAxis;
-      clone.color = color;
-      clone.startIndexZero = startIndexZero;
-      return clone;
-    }
 
     public event PropertyChangedEventHandler PropertyChanged;
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataTable.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataTable.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataTable.cs	(revision 4677)
@@ -47,4 +47,16 @@
     }
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    private DataTable(bool deserializing) : base(deserializing) { }
+    private DataTable(DataTable original, Cloner cloner)
+      : base(original, cloner) {
+      this.rows = cloner.Clone(original.rows);
+      this.RegisterRowsEvents();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new DataTable(this, cloner);
+    }
+    #endregion
     public DataTable()
       : base() {
@@ -127,11 +139,4 @@
     private void Values_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<double>> e) {
       this.OnReset();
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      DataTable clone = new DataTable(Name, Description);
-      cloner.RegisterClonedObject(this, clone);
-      clone.rows = (NamedItemCollection<DataRow>)cloner.Clone(rows);
-      return clone;
     }
 
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataTableValuesCollector.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataTableValuesCollector.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/DataTableValuesCollector.cs	(revision 4677)
@@ -27,4 +27,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -39,4 +40,12 @@
     }
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected DataTableValuesCollector(bool deserializing) : base(deserializing) { }
+    protected DataTableValuesCollector(DataTableValuesCollector original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new DataTableValuesCollector(this, cloner);
+    }
+    #endregion
     public DataTableValuesCollector()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/MinAverageMaxValueAnalyzer.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/MinAverageMaxValueAnalyzer.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/MinAverageMaxValueAnalyzer.cs	(revision 4677)
@@ -83,4 +83,16 @@
     [Storable]
     private ResultsCollector resultsCollector;
+
+    #region Storing & Cloning
+    [StorableConstructor]
+    private MinAverageMaxValueAnalyzer(bool deserializing) : base(deserializing) { }
+    private MinAverageMaxValueAnalyzer(MinAverageMaxValueAnalyzer original, Cloner cloner)
+      : base(original, cloner) {
+      Initialize();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new MinAverageMaxValueAnalyzer(this, cloner);
+    }
+    #endregion
     public MinAverageMaxValueAnalyzer()
       : base() {
@@ -132,6 +144,4 @@
       Initialize();
     }
-    [StorableConstructor]
-    private MinAverageMaxValueAnalyzer(bool deserializing) : base() { }
 
     [StorableHook(HookType.AfterDeserialization)]
@@ -176,10 +186,4 @@
     }
 
-    public override IDeepCloneable Clone(Cloner cloner) {
-      MinAverageMaxValueAnalyzer clone = (MinAverageMaxValueAnalyzer)base.Clone(cloner);
-      clone.Initialize();
-      return clone;
-    }
-
     private void ValueParameter_DepthChanged(object sender, System.EventArgs e) {
       MinAverageMaxValueCalculator.ValueParameter.Depth = ValueParameter.Depth;
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/MinAverageMaxValueCalculator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/MinAverageMaxValueCalculator.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/MinAverageMaxValueCalculator.cs	(revision 4677)
@@ -25,4 +25,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -46,4 +47,12 @@
     }
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    private MinAverageMaxValueCalculator(bool deserializing) : base(deserializing) { }
+    private MinAverageMaxValueCalculator(MinAverageMaxValueCalculator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new MinAverageMaxValueCalculator(this, cloner);
+    }
+    #endregion
     public MinAverageMaxValueCalculator()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/MultiAnalyzer.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/MultiAnalyzer.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/MultiAnalyzer.cs	(revision 4677)
@@ -27,4 +27,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -51,4 +52,12 @@
     }
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected MultiAnalyzer(bool deserializing) : base(deserializing) { }
+    protected MultiAnalyzer(MultiAnalyzer original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new MultiAnalyzer(this, cloner);
+    }
+    #endregion
     public MultiAnalyzer()
       : base() {
@@ -56,6 +65,4 @@
       Parameters.Add(new LookupParameter<IntValue>("UpdateCounter", "The value which counts how many times the MultiAnalyzer was called since the last update.", "MultiAnalyzerUpdateCounter"));
     }
-    [StorableConstructor]
-    protected MultiAnalyzer(bool deserializing) : base(deserializing) { }
 
     public override IOperation Apply() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/QualityAnalyzer.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/QualityAnalyzer.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/QualityAnalyzer.cs	(revision 4677)
@@ -79,4 +79,15 @@
     #endregion
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    private QualityAnalyzer(bool deserializing) : base(deserializing) { }
+    private QualityAnalyzer(QualityAnalyzer original, Cloner cloner)
+      : base(original, cloner) {
+      Initialize();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new QualityAnalyzer(this, cloner);
+    }
+    #endregion
     public QualityAnalyzer()
       : base() {
@@ -141,16 +152,12 @@
       Initialize();
     }
-    [StorableConstructor]
-    private QualityAnalyzer(bool deserializing) : base() { }
 
     [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      Initialize();
+    }
+
     private void Initialize() {
       QualityParameter.DepthChanged += new EventHandler(QualityParameter_DepthChanged);
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      QualityAnalyzer clone = (QualityAnalyzer)base.Clone(cloner);
-      clone.Initialize();
-      return clone;
     }
 
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/QualityDifferenceCalculator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/QualityDifferenceCalculator.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/QualityDifferenceCalculator.cs	(revision 4677)
@@ -25,4 +25,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Analysis {
@@ -46,4 +47,12 @@
     }
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    protected QualityDifferenceCalculator(bool deserializing) : base(deserializing) { }
+    protected QualityDifferenceCalculator(QualityDifferenceCalculator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new QualityDifferenceCalculator(this, cloner);
+    }
+    #endregion
     public QualityDifferenceCalculator()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Analysis/3.3/ValueAnalyzer.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Analysis/3.3/ValueAnalyzer.cs	(revision 4656)
+++ branches/CloningRefactoring/HeuristicLab.Analysis/3.3/ValueAnalyzer.cs	(revision 4677)
@@ -58,4 +58,15 @@
     #endregion
 
+    #region Storing & Cloning
+    [StorableConstructor]
+    private ValueAnalyzer(bool deserializing) : base(deserializing) { }
+    private ValueAnalyzer(ValueAnalyzer original, Cloner cloner)
+      : base(original, cloner) {
+        Initialize();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ValueAnalyzer(this, cloner);
+    }
+    #endregion
     public ValueAnalyzer()
       : base() {
@@ -88,16 +99,12 @@
       Initialize();
     }
-    [StorableConstructor]
-    private ValueAnalyzer(bool deserializing) : base() { }
 
     [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      Initialize();
+    }
+
     private void Initialize() {
       ValueParameter.DepthChanged += new EventHandler(ValueParameter_DepthChanged);
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      ValueAnalyzer clone = (ValueAnalyzer)base.Clone(cloner);
-      clone.Initialize();
-      return clone;
     }
 
