Index: /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Crossovers/PrinsCrossover.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Crossovers/PrinsCrossover.cs	(revision 4685)
+++ /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Crossovers/PrinsCrossover.cs	(revision 4686)
@@ -26,4 +26,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Optimization;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
@@ -53,5 +54,5 @@
     [StorableConstructor]
     protected PrinsCrossover(bool deserializing) : base(deserializing) { }
-
+    protected PrinsCrossover(PrinsCrossover original, Cloner cloner) : base(original, cloner) { }
     public PrinsCrossover()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Crossovers/PrinsPermutationCrossover.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Crossovers/PrinsPermutationCrossover.cs	(revision 4685)
+++ /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Crossovers/PrinsPermutationCrossover.cs	(revision 4686)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Data;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
@@ -36,5 +37,8 @@
     [StorableConstructor]
     private PrinsPermutationCrossover(bool deserializing) : base(deserializing) { }
-
+    private PrinsPermutationCrossover(PrinsPermutationCrossover original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PrinsPermutationCrossover(this, cloner);
+    }
     public PrinsPermutationCrossover()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsExhaustiveLSManipulator.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsExhaustiveLSManipulator.cs	(revision 4685)
+++ /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsExhaustiveLSManipulator.cs	(revision 4686)
@@ -26,4 +26,5 @@
 using HeuristicLab.Data;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
@@ -33,5 +34,8 @@
     [StorableConstructor]
     private PrinsExhaustiveLSManipulator(bool deserializing) : base(deserializing) { }
-
+    private PrinsExhaustiveLSManipulator(PrinsExhaustiveLSManipulator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PrinsExhaustiveLSManipulator(this, cloner);
+    }
     public PrinsExhaustiveLSManipulator()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsLSManipulator.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsLSManipulator.cs	(revision 4685)
+++ /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsLSManipulator.cs	(revision 4686)
@@ -26,4 +26,5 @@
 using HeuristicLab.Data;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
@@ -37,5 +38,5 @@
     [StorableConstructor]
     protected PrinsLSManipulator(bool deserializing) : base(deserializing) { }
-
+    protected PrinsLSManipulator(PrinsLSManipulator original, Cloner cloner) : base(original, cloner) { }
     public PrinsLSManipulator()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsManipulator.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsManipulator.cs	(revision 4685)
+++ /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsManipulator.cs	(revision 4686)
@@ -26,4 +26,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Optimization;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
@@ -53,5 +54,5 @@
     [StorableConstructor]
     protected PrinsManipulator(bool deserializing) : base(deserializing) { }
-
+    protected PrinsManipulator(PrinsManipulator original, Cloner cloner) : base(original, cloner) { }
     public PrinsManipulator()
       : base() {
@@ -61,5 +62,4 @@
       Parameters.Add(new LookupParameter<DoubleValue>("EvalOverloadPenalty", "The overload penalty considered in the evaluation."));
       Parameters.Add(new LookupParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation."));
-
       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/Prins/Manipulators/PrinsPermutationManipulator.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsPermutationManipulator.cs	(revision 4685)
+++ /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsPermutationManipulator.cs	(revision 4686)
@@ -25,4 +25,5 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Data;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
@@ -36,5 +37,8 @@
     [StorableConstructor]
     private PrinsPermutationManipulator(bool deserializing) : base(deserializing) { }
-
+    private PrinsPermutationManipulator(PrinsPermutationManipulator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PrinsPermutationManipulator(this, cloner);
+    }
     public PrinsPermutationManipulator()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsStochasticLSManipulator.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsStochasticLSManipulator.cs	(revision 4685)
+++ /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/Manipulators/PrinsStochasticLSManipulator.cs	(revision 4686)
@@ -26,4 +26,5 @@
 using HeuristicLab.Data;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Prins {
@@ -37,5 +38,8 @@
     [StorableConstructor]
     private PrinsStochasticLSManipulator(bool deserializing) : base(deserializing) { }
-
+    private PrinsStochasticLSManipulator(PrinsStochasticLSManipulator original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PrinsStochasticLSManipulator(this, cloner);
+    }
     public PrinsStochasticLSManipulator()
       : base() {
Index: /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/PrinsEncoding.cs
===================================================================
--- /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/PrinsEncoding.cs	(revision 4685)
+++ /branches/CloningRefactoring/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Prins/PrinsEncoding.cs	(revision 4686)
@@ -178,17 +178,26 @@
     }
     #endregion
-
-    public override IDeepCloneable Clone(HeuristicLab.Common.Cloner cloner) {
-      PrinsEncoding clone = new PrinsEncoding(
-        new Permutation(this.PermutationType, this.array), cities, 
-        dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
-        fleetUsageFactor, timeFactor, distanceFactor, overloadPenalty, tardinessPenalty,
-        coordinates, useDistanceMatrix);
-
-      cloner.RegisterClonedObject(this, clone);
-      clone.readOnly = readOnly;
-      return clone;
-    }
-
+    
+    [StorableConstructor]
+    protected PrinsEncoding(bool deserializing) : base(deserializing) { }
+    protected PrinsEncoding(PrinsEncoding original, Cloner cloner)
+      : base(original, cloner) {
+      this.cities = original.cities;
+      this.dueTimeArray = original.dueTimeArray;
+      this.serviceTimeArray = original.serviceTimeArray;
+      this.readyTimeArray = original.readyTimeArray;
+      this.demandArray = original.demandArray;
+      this.capacity = original.capacity;
+      this.fleetUsageFactor = original.fleetUsageFactor;
+      this.timeFactor = original.timeFactor;
+      this.distanceFactor = original.distanceFactor;
+      this.overloadPenalty = original.overloadPenalty;
+      this.tardinessPenalty = original.tardinessPenalty;
+      this.coordinates = original.coordinates;
+      this.useDistanceMatrix = original.useDistanceMatrix;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PrinsEncoding(this, cloner);
+    }
     public PrinsEncoding(Permutation permutation, int cities,
       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity,
@@ -211,9 +220,4 @@
     }
 
-    [StorableConstructor]
-    private PrinsEncoding(bool serializing)
-      : base(serializing) {
-    }
-
     public static PrinsEncoding ConvertFrom(IVRPEncoding encoding, int cities,
       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity,
