Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuCrossover.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuCrossover.cs	(revision 4539)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuCrossover.cs	(revision 4752)
@@ -28,4 +28,5 @@
 using HeuristicLab.Problems.VehicleRouting.Encodings.General;
 using HeuristicLab.Problems.VehicleRouting.Interfaces;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
@@ -43,4 +44,8 @@
       : base() {
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
+    }
+
+    protected ZhuCrossover(ZhuCrossover original, Cloner cloner)
+      : base(original, cloner) {
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuHeuristicCrossover1.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuHeuristicCrossover1.cs	(revision 4539)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuHeuristicCrossover1.cs	(revision 4752)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Data;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
@@ -35,4 +36,12 @@
     public ZhuHeuristicCrossover1()
       : base() {
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ZhuHeuristicCrossover1(this, cloner);
+    }
+
+    private ZhuHeuristicCrossover1(ZhuHeuristicCrossover1 original, Cloner cloner)
+      : base(original, cloner) {
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuHeuristicCrossover2.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuHeuristicCrossover2.cs	(revision 4539)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuHeuristicCrossover2.cs	(revision 4752)
@@ -26,4 +26,5 @@
 using HeuristicLab.Data;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
@@ -36,4 +37,12 @@
     public ZhuHeuristicCrossover2()
       : base() {
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ZhuHeuristicCrossover2(this, cloner);
+    }
+
+    private ZhuHeuristicCrossover2(ZhuHeuristicCrossover2 original, Cloner cloner)
+      : base(original, cloner) {
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuMergeCrossover1.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuMergeCrossover1.cs	(revision 4539)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuMergeCrossover1.cs	(revision 4752)
@@ -26,4 +26,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Problems.VehicleRouting.Variants;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
@@ -36,4 +37,12 @@
     public ZhuMergeCrossover1()
       : base() {
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ZhuMergeCrossover1(this, cloner);
+    }
+
+    private ZhuMergeCrossover1(ZhuMergeCrossover1 original, Cloner cloner)
+      : base(original, cloner) {
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuMergeCrossover2.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuMergeCrossover2.cs	(revision 4539)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuMergeCrossover2.cs	(revision 4752)
@@ -27,4 +27,5 @@
 using System.Collections.Generic;
 using HeuristicLab.Problems.VehicleRouting.Variants;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
@@ -37,4 +38,12 @@
     public ZhuMergeCrossover2()
       : base() {
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ZhuMergeCrossover2(this, cloner);
+    }
+
+    private ZhuMergeCrossover2(ZhuMergeCrossover2 original, Cloner cloner)
+      : base(original, cloner) {
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuPermutationCrossover.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuPermutationCrossover.cs	(revision 4539)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Crossovers/ZhuPermutationCrossover.cs	(revision 4752)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Data;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
@@ -40,4 +41,12 @@
       : base() {
       Parameters.Add(new ValueLookupParameter<IPermutationCrossover>("InnerCrossover", "The permutation crossover.", new PartiallyMatchedCrossover()));
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PrinsPermutationCrossover(this, cloner);
+    }
+
+    private PrinsPermutationCrossover(PrinsPermutationCrossover original, Cloner cloner)
+      : base(original, cloner) {
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Manipulators/ZhuManipulator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Manipulators/ZhuManipulator.cs	(revision 4539)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Manipulators/ZhuManipulator.cs	(revision 4752)
@@ -28,4 +28,5 @@
 using HeuristicLab.Problems.VehicleRouting.Encodings.General;
 using HeuristicLab.Problems.VehicleRouting.Interfaces;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
@@ -45,4 +46,8 @@
     }
 
+    protected ZhuManipulator(ZhuManipulator original, Cloner cloner)
+      : base(original, cloner) {
+    }
+
     protected abstract void Manipulate(IRandom random, ZhuEncoding individual);
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Manipulators/ZhuPermutationManipulator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Manipulators/ZhuPermutationManipulator.cs	(revision 4539)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/Manipulators/ZhuPermutationManipulator.cs	(revision 4752)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Data;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Zhu {
@@ -42,4 +43,12 @@
     }
 
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ZhuPermutationManipulator(this, cloner);
+    }
+
+    private ZhuPermutationManipulator(ZhuPermutationManipulator original, Cloner cloner)
+      : base(original, cloner) {
+    }
+
     protected override void Manipulate(IRandom random, ZhuEncoding individual) {
       InnerManipulatorParameter.ActualValue.PermutationParameter.ActualName = VRPToursParameter.ActualName;
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/ZhuEncoding.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/ZhuEncoding.cs	(revision 4539)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/ZhuEncoding.cs	(revision 4752)
@@ -93,15 +93,14 @@
     #endregion
 
-    public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
-      ZhuEncoding clone = new ZhuEncoding(
-        new Permutation(this.PermutationType, this.array), ProblemInstance);
-
-      cloner.RegisterClonedObject(this, clone);
-      clone.readOnly = readOnly;
-      return clone;
+    public ZhuEncoding(Permutation permutation, IVRPProblemInstance problemInstance)
+      : base(permutation, problemInstance) {
     }
 
-    public ZhuEncoding(Permutation permutation, IVRPProblemInstance problemInstance)
-      : base(permutation, problemInstance) {
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ZhuEncoding(this, cloner);
+    }
+
+    protected ZhuEncoding(ZhuEncoding original, Cloner cloner)
+      : base(original, cloner) {
     }
 
