Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Tour.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Tour.cs	(revision 4691)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Tour.cs	(revision 4692)
@@ -32,4 +32,10 @@
     public List<int> Cities { get; private set; }
 
+    [StorableConstructor]
+    protected Tour(bool deserializing) : base(deserializing) { }
+    protected Tour(Tour original, Cloner cloner)
+      : base(original, cloner) {
+      Cities = new List<int>(original.Cities);
+    }
     public Tour() {
       Cities = new List<int>();
@@ -37,8 +43,5 @@
 
     public override IDeepCloneable Clone(Cloner cloner) {
-      Tour clone = base.Clone(cloner) as Tour;
-      clone.Cities = new List<int>(Cities);
-
-      return clone;
+      return new Tour(this, cloner);
     }
 
@@ -63,7 +66,7 @@
       return eval.Overload < double.Epsilon && eval.Tardiness < double.Epsilon;
     }
-    
-    public double GetLength(DoubleMatrix coordinates, 
-      ILookupParameter<DoubleMatrix> distanceMatrix, 
+
+    public double GetLength(DoubleMatrix coordinates,
+      ILookupParameter<DoubleMatrix> distanceMatrix,
       BoolValue useDistanceMatrix) {
       double length = 0;
@@ -79,5 +82,5 @@
         for (int i = 1; i < cities.Count; i++) {
           length += VRPUtilities.GetDistance(
-            cities[i - 1], cities[i], coordinates, distanceMatrix, useDistanceMatrix); 
+            cities[i - 1], cities[i], coordinates, distanceMatrix, useDistanceMatrix);
         }
       }
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCreator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCreator.cs	(revision 4691)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCreator.cs	(revision 4692)
@@ -25,4 +25,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings {
@@ -41,10 +42,11 @@
     [StorableConstructor]
     protected VRPCreator(bool deserializing) : base(deserializing) { }
-
+    protected VRPCreator(VRPCreator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public VRPCreator()
       : base() {
       Parameters.Add(new LookupParameter<IVRPEncoding>("VRPTours", "The new VRP tours."));
     }
-
     #endregion
   }
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCrossover.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCrossover.cs	(revision 4691)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCrossover.cs	(revision 4692)
@@ -25,4 +25,5 @@
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings {
@@ -44,5 +45,7 @@
     [StorableConstructor]
     protected VRPCrossover(bool deserializing) : base(deserializing) { }
-
+    protected VRPCrossover(VRPCrossover original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public VRPCrossover()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPManipulator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPManipulator.cs	(revision 4691)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPManipulator.cs	(revision 4692)
@@ -25,4 +25,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings {
@@ -40,5 +41,7 @@
     [StorableConstructor]
     protected VRPManipulator(bool deserializing) : base(deserializing) { }
-
+    protected VRPManipulator(VRPManipulator original, Cloner cloner)
+      : base(original, cloner) {
+    }
     public VRPManipulator()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPMoveOperator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPMoveOperator.cs	(revision 4691)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPMoveOperator.cs	(revision 4692)
@@ -25,4 +25,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings {
@@ -35,10 +36,10 @@
       get { return (ILookupParameter<IVRPEncoding>)Parameters["VRPTours"]; }
     }
-   
+
     #endregion
 
     [StorableConstructor]
     protected VRPMoveOperator(bool deserializing) : base(deserializing) { }
-
+    protected VRPMoveOperator(VRPMoveOperator original, Cloner cloner) : base(original, cloner) { }
     public VRPMoveOperator()
       : base() {
