Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Crossovers/GVRCrossover.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Crossovers/GVRCrossover.cs	(revision 4687)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Crossovers/GVRCrossover.cs	(revision 4689)
@@ -27,4 +27,5 @@
 using HeuristicLab.Optimization;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
@@ -38,8 +39,10 @@
     [StorableConstructor]
     private GVRCrossover(bool deserializing) : base(deserializing) { }
-
+    private GVRCrossover(GVRCrossover original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new GVRCrossover(this, cloner);
+    }
     public GVRCrossover() {
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
-
       //remove unused parameters
       Parameters.Remove("ReadyTime");
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/GVREncoding.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/GVREncoding.cs	(revision 4687)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/GVREncoding.cs	(revision 4689)
@@ -75,22 +75,20 @@
       return tours;
     }
-    
-    public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
-      GVREncoding clone = new GVREncoding(capacity, demand);
-      cloner.RegisterClonedObject(this, clone);
-      clone.Tours = (ItemList<Tour>)cloner.Clone(this.Tours);
-     
-      return clone;
+
+    [StorableConstructor]
+    protected GVREncoding(bool deserializing) : base(deserializing) { }
+    protected GVREncoding(GVREncoding original, Cloner cloner)
+      : base(original, cloner) {
+      this.capacity = original.capacity;
+      this.demand = original.demand;
+      this.Tours = cloner.Clone(original.Tours);
     }
-
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new GVREncoding(this, cloner);
+    }
     public GVREncoding(DoubleValue capacity, DoubleArray demand)
       : base() {
         this.capacity = capacity;
         this.demand = demand;
-    }
-
-    [StorableConstructor]
-    private GVREncoding(bool serializing)
-      : base() {
     }
 
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRDisplacementManipulator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRDisplacementManipulator.cs	(revision 4687)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRDisplacementManipulator.cs	(revision 4689)
@@ -26,4 +26,5 @@
 using HeuristicLab.Data;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
@@ -33,5 +34,8 @@
     [StorableConstructor]
     private GVRDisplacementManipulator(bool deserializing) : base(deserializing) { }
-
+    private GVRDisplacementManipulator(GVRDisplacementManipulator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new GVRDisplacementManipulator(this, cloner);
+    }
     public GVRDisplacementManipulator()
       : base() {
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRInsertionManipulator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRInsertionManipulator.cs	(revision 4687)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRInsertionManipulator.cs	(revision 4689)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Data;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
@@ -32,8 +33,9 @@
     [StorableConstructor]
     private GVRInsertionManipulator(bool deserializing) : base(deserializing) { }
-
-    public GVRInsertionManipulator()
-      : base() {
+    private GVRInsertionManipulator(GVRInsertionManipulator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new GVRInsertionManipulator(this, cloner);
     }
+    public GVRInsertionManipulator() : base() { }
 
     protected override void Manipulate(IRandom random, GVREncoding individual) {
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRInversionManipulator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRInversionManipulator.cs	(revision 4687)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRInversionManipulator.cs	(revision 4689)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Data;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
@@ -32,8 +33,9 @@
     [StorableConstructor]
     private GVRInversionManipulator(bool deserializing) : base(deserializing) { }
-
-    public GVRInversionManipulator()
-      : base() {
+    private GVRInversionManipulator(GVRInversionManipulator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new GVRInversionManipulator(this, cloner);
     }
+    public GVRInversionManipulator() : base() { }
 
     protected override void Manipulate(IRandom random, GVREncoding individual) {
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRManipulator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRManipulator.cs	(revision 4687)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRManipulator.cs	(revision 4689)
@@ -26,4 +26,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Optimization;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
@@ -37,5 +38,5 @@
     [StorableConstructor]
     protected GVRManipulator(bool deserializing) : base(deserializing) { }
-
+    protected GVRManipulator(GVRManipulator original, Cloner cloner) : base(original, cloner) { }
     public GVRManipulator() {
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
Index: branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRSwapManipulator.cs
===================================================================
--- branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRSwapManipulator.cs	(revision 4687)
+++ branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/GVR/Manipulators/GVRSwapManipulator.cs	(revision 4689)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Data;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.GVR {
@@ -32,5 +33,8 @@
     [StorableConstructor]
     private GVRSwapManipulator(bool deserializing) : base(deserializing) { }
-
+    private GVRSwapManipulator(GVRSwapManipulator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new GVRSwapManipulator(this, cloner);
+    }
     public GVRSwapManipulator()
       : base() {
