Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/Capacitated/CapacityRelaxationVRPAnalyzer.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/Capacitated/CapacityRelaxationVRPAnalyzer.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/Capacitated/CapacityRelaxationVRPAnalyzer.cs	(revision 7907)
@@ -74,5 +74,5 @@
 
     [StorableConstructor]
-    private CapacityRelaxationVRPAnalyzer(bool deserializing) : base(deserializing) { }
+    protected CapacityRelaxationVRPAnalyzer(bool deserializing) : base(deserializing) { }
 
     public CapacityRelaxationVRPAnalyzer()
@@ -95,5 +95,5 @@
     }
 
-    private CapacityRelaxationVRPAnalyzer(CapacityRelaxationVRPAnalyzer original, Cloner cloner)
+    protected CapacityRelaxationVRPAnalyzer(CapacityRelaxationVRPAnalyzer original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/PickupAndDelivery/PickupViolationsRelaxationVRPAnalyzer.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/PickupAndDelivery/PickupViolationsRelaxationVRPAnalyzer.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/PickupAndDelivery/PickupViolationsRelaxationVRPAnalyzer.cs	(revision 7907)
@@ -74,5 +74,5 @@
 
     [StorableConstructor]
-    private PickupViolationsRelaxationVRPAnalyzer(bool deserializing) : base(deserializing) { }
+    protected PickupViolationsRelaxationVRPAnalyzer(bool deserializing) : base(deserializing) { }
 
     public PickupViolationsRelaxationVRPAnalyzer()
@@ -95,5 +95,5 @@
     }
 
-    private PickupViolationsRelaxationVRPAnalyzer(PickupViolationsRelaxationVRPAnalyzer original, Cloner cloner)
+    protected PickupViolationsRelaxationVRPAnalyzer(PickupViolationsRelaxationVRPAnalyzer original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/TimeWindowed/TimeWindowRelaxationVRPAnalyzer.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/TimeWindowed/TimeWindowRelaxationVRPAnalyzer.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/ConstraintRelaxation/TimeWindowed/TimeWindowRelaxationVRPAnalyzer.cs	(revision 7907)
@@ -74,5 +74,5 @@
 
     [StorableConstructor]
-    private TimeWindowRelaxationVRPAnalyzer(bool deserializing) : base(deserializing) { }
+    protected TimeWindowRelaxationVRPAnalyzer(bool deserializing) : base(deserializing) { }
 
     public TimeWindowRelaxationVRPAnalyzer()
@@ -95,5 +95,5 @@
     }
 
-    private TimeWindowRelaxationVRPAnalyzer(TimeWindowRelaxationVRPAnalyzer original, Cloner cloner)
+    protected TimeWindowRelaxationVRPAnalyzer(TimeWindowRelaxationVRPAnalyzer original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/VRPSolution.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/VRPSolution.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Analyzer/VRPSolution.cs	(revision 7907)
@@ -106,7 +106,11 @@
     private VRPSolution(VRPSolution original, Cloner cloner)
       : base(original, cloner) {
-      this.problemInstance = original.problemInstance;
       this.solution = (IVRPEncoding)cloner.Clone(original.solution);
       this.quality = (DoubleValue)cloner.Clone(original.quality);
+
+      if (original.ProblemInstance != null && cloner.ClonedObjectRegistered(original.ProblemInstance))
+        this.ProblemInstance = (IVRPProblemInstance)cloner.Clone(original.ProblemInstance);
+      else
+        this.ProblemInstance = original.ProblemInstance;
 
       this.Initialize();
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/AlbaEncoding.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/AlbaEncoding.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/AlbaEncoding.cs	(revision 7907)
@@ -109,5 +109,5 @@
 
     [StorableConstructor]
-    private AlbaEncoding(bool serializing)
+    protected AlbaEncoding(bool serializing)
       : base(serializing) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMoveMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/IntraRouteInversion/AlbaIntraRouteInversionMoveMaker.cs	(revision 7907)
@@ -41,5 +41,5 @@
 
     [StorableConstructor]
-    private AlbaIntraRouteInversionMoveMaker(bool deserializing) : base(deserializing) { }
+    protected AlbaIntraRouteInversionMoveMaker(bool deserializing) : base(deserializing) { }
 
     public AlbaIntraRouteInversionMoveMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMove.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMove.cs	(revision 7907)
@@ -80,4 +80,7 @@
     }
 
+    [StorableConstructor]
+    protected AlbaLambdaInterchangeMove(bool deserializing) : base(deserializing) { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new AlbaLambdaInterchangeMove(this, cloner);
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/Moves/LambdaInterchange/AlbaLambdaInterchangeMoveMaker.cs	(revision 7907)
@@ -45,5 +45,5 @@
 
     [StorableConstructor]
-    private AlbaLambdaInterchangeMoveMaker(bool deserializing) : base(deserializing) { }
+    protected AlbaLambdaInterchangeMoveMaker(bool deserializing) : base(deserializing) { }
 
     public AlbaLambdaInterchangeMoveMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/GVR/GVREncoding.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/GVR/GVREncoding.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/GVR/GVREncoding.cs	(revision 7907)
@@ -83,5 +83,5 @@
 
     [StorableConstructor]
-    private GVREncoding(bool serializing)
+    protected GVREncoding(bool serializing)
       : base(serializing) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Creators/MultiVRPSolutionCreator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Creators/MultiVRPSolutionCreator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Creators/MultiVRPSolutionCreator.cs	(revision 7907)
@@ -55,5 +55,5 @@
 
     [StorableConstructor]
-    private MultiVRPSolutionCreator(bool deserializing) : base(deserializing) { }
+    protected MultiVRPSolutionCreator(bool deserializing) : base(deserializing) { }
     public MultiVRPSolutionCreator()
       : base() {
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveGenerator.cs	(revision 7907)
@@ -77,5 +77,5 @@
 
     [StorableConstructor]
-    private MultiVRPMoveGenerator(bool deserializing) : base(deserializing) { }
+    protected MultiVRPMoveGenerator(bool deserializing) : base(deserializing) { }
     public MultiVRPMoveGenerator()
       : base() {
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveMaker.cs	(revision 7907)
@@ -39,5 +39,5 @@
     
     [StorableConstructor]
-    private MultiVRPMoveMaker(bool deserializing) : base(deserializing) { }
+    protected MultiVRPMoveMaker(bool deserializing) : base(deserializing) { }
 
     public MultiVRPMoveMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveTabuChecker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveTabuChecker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveTabuChecker.cs	(revision 7907)
@@ -68,5 +68,5 @@
     
     [StorableConstructor]
-    private MultiVRPMoveTabuChecker(bool deserializing) : base(deserializing) { }
+    protected MultiVRPMoveTabuChecker(bool deserializing) : base(deserializing) { }
 
     public MultiVRPMoveTabuChecker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveTabuMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveTabuMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveTabuMaker.cs	(revision 7907)
@@ -61,5 +61,5 @@
     
     [StorableConstructor]
-    private MultiVRPMoveTabuMaker(bool deserializing) : base(deserializing) { }
+    protected MultiVRPMoveTabuMaker(bool deserializing) : base(deserializing) { }
 
     public MultiVRPMoveTabuMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/PermutationEncoding.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/PermutationEncoding.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/PermutationEncoding.cs	(revision 7907)
@@ -60,6 +60,10 @@
     protected PermutationEncoding(PermutationEncoding original, Cloner cloner)
       : base(original, cloner) {
-        this.ProblemInstance = original.ProblemInstance;
         this.readOnly = original.readOnly;
+
+        if (original.ProblemInstance != null && cloner.ClonedObjectRegistered(original.ProblemInstance))
+          this.ProblemInstance = (IVRPProblemInstance)cloner.Clone(original.ProblemInstance);
+        else
+          this.ProblemInstance = original.ProblemInstance;
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/TourEncoding.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/TourEncoding.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/TourEncoding.cs	(revision 7907)
@@ -115,5 +115,8 @@
       : base(original, cloner) {
        this.Tours = (ItemList<Tour>)cloner.Clone(original.Tours);
-       this.ProblemInstance = original.ProblemInstance;
+       if (original.ProblemInstance != null && cloner.ClonedObjectRegistered(original.ProblemInstance))
+         this.ProblemInstance = (IVRPProblemInstance)cloner.Clone(original.ProblemInstance);
+       else
+         this.ProblemInstance = original.ProblemInstance;
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationExhaustiveMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationExhaustiveMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationExhaustiveMoveGenerator.cs	(revision 7907)
@@ -44,5 +44,5 @@
     }
 
-    private PotvinCustomerRelocationExhaustiveMoveGenerator(PotvinCustomerRelocationMoveGenerator original, Cloner cloner)
+    private PotvinCustomerRelocationExhaustiveMoveGenerator(PotvinCustomerRelocationExhaustiveMoveGenerator original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationMove.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationMove.cs	(revision 7907)
@@ -74,4 +74,7 @@
     }
 
+    [StorableConstructor]
+    protected PotvinCustomerRelocationMove(bool deserializing) : base(deserializing) { }
+
     #region IVRPMove Members
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationMoveMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationMoveMaker.cs	(revision 7907)
@@ -52,5 +52,5 @@
 
     [StorableConstructor]
-    private PotvinCustomerRelocationMoveMaker(bool deserializing) : base(deserializing) { }
+    protected PotvinCustomerRelocationMoveMaker(bool deserializing) : base(deserializing) { }
 
     public PotvinCustomerRelocationMoveMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationMultiMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationMultiMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationMultiMoveGenerator.cs	(revision 7907)
@@ -56,5 +56,5 @@
     }
 
-    private PotvinCustomerRelocationMultiMoveGenerator(PotvinCustomerRelocationMoveGenerator original, Cloner cloner)
+    private PotvinCustomerRelocationMultiMoveGenerator(PotvinCustomerRelocationMultiMoveGenerator original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationSingleMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationSingleMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/CustomerRelocation/PotvinCustomerRelocationSingleMoveGenerator.cs	(revision 7907)
@@ -60,5 +60,5 @@
     }
 
-    private PotvinCustomerRelocationSingleMoveGenerator(PotvinCustomerRelocationMoveGenerator original, Cloner cloner)
+    private PotvinCustomerRelocationSingleMoveGenerator(PotvinCustomerRelocationSingleMoveGenerator original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDExchange/PotvinPDExchangeMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDExchange/PotvinPDExchangeMove.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDExchange/PotvinPDExchangeMove.cs	(revision 7907)
@@ -65,4 +65,7 @@
       this.Individual = individual.Clone() as PotvinEncoding;
     }
+
+    [StorableConstructor]
+    protected PotvinPDExchangeMove(bool deserializing) : base(deserializing) { }
 
     public override IDeepCloneable Clone(Cloner cloner) {
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDExchange/PotvinPDExchangeMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDExchange/PotvinPDExchangeMoveMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDExchange/PotvinPDExchangeMoveMaker.cs	(revision 7907)
@@ -44,5 +44,5 @@
 
     [StorableConstructor]
-    private PotvinPDExchangeMoveMaker(bool deserializing) : base(deserializing) { }
+    protected PotvinPDExchangeMoveMaker(bool deserializing) : base(deserializing) { }
 
     public PotvinPDExchangeMoveMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDRearrange/PotvinPDRearrangeMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDRearrange/PotvinPDRearrangeMove.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDRearrange/PotvinPDRearrangeMove.cs	(revision 7907)
@@ -70,4 +70,7 @@
     }
 
+    [StorableConstructor]
+    protected PotvinPDRearrangeMove(bool deserializing) : base(deserializing) { }
+
     #region IVRPMove Members
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDRearrange/PotvinPDRearrangeMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDRearrange/PotvinPDRearrangeMoveMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDRearrange/PotvinPDRearrangeMoveMaker.cs	(revision 7907)
@@ -44,5 +44,5 @@
 
     [StorableConstructor]
-    private PotvinPDRearrangeMoveMaker(bool deserializing) : base(deserializing) { }
+    protected PotvinPDRearrangeMoveMaker(bool deserializing) : base(deserializing) { }
 
     public PotvinPDRearrangeMoveMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMove.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMove.cs	(revision 7907)
@@ -75,4 +75,7 @@
     }
 
+    [StorableConstructor]
+    protected PotvinPDShiftMove(bool deserializing) : base(deserializing) { }
+
     #region IVRPMove Members
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMoveMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMoveMaker.cs	(revision 7907)
@@ -45,5 +45,5 @@
 
     [StorableConstructor]
-    private PotvinPDShiftMoveMaker(bool deserializing) : base(deserializing) { }
+    protected PotvinPDShiftMoveMaker(bool deserializing) : base(deserializing) { }
 
     public PotvinPDShiftMoveMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarExhaustiveMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarExhaustiveMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarExhaustiveMoveGenerator.cs	(revision 7907)
@@ -44,5 +44,5 @@
     }
 
-    private PotvinTwoOptStarExhaustiveMoveGenerator(PotvinTwoOptStarMoveGenerator original, Cloner cloner)
+    private PotvinTwoOptStarExhaustiveMoveGenerator(PotvinTwoOptStarExhaustiveMoveGenerator original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarMove.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarMove.cs	(revision 7907)
@@ -81,4 +81,7 @@
     }
 
+    [StorableConstructor]
+    protected PotvinTwoOptStarMove(bool deserializing) : base(deserializing) { }
+
     #region IVRPMove Members
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarMoveMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarMoveMaker.cs	(revision 7907)
@@ -45,5 +45,5 @@
 
     [StorableConstructor]
-    private PotvinTwoOptStarMoveMaker(bool deserializing) : base(deserializing) { }
+    protected PotvinTwoOptStarMoveMaker(bool deserializing) : base(deserializing) { }
 
     public PotvinTwoOptStarMoveMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarMultiMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarMultiMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarMultiMoveGenerator.cs	(revision 7907)
@@ -56,5 +56,5 @@
     }
 
-    private PotvinTwoOptStarMultiMoveGenerator(PotvinTwoOptStarMoveGenerator original, Cloner cloner)
+    private PotvinTwoOptStarMultiMoveGenerator(PotvinTwoOptStarMultiMoveGenerator original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarSingleMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarSingleMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/TwoOptStar/PotvinTwoOptStarSingleMoveGenerator.cs	(revision 7907)
@@ -60,5 +60,5 @@
     }
 
-    private PotvinTwoOptStarSingleMoveGenerator(PotvinTwoOptStarMoveGenerator original, Cloner cloner)
+    private PotvinTwoOptStarSingleMoveGenerator(PotvinTwoOptStarSingleMoveGenerator original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentExhaustiveMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentExhaustiveMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentExhaustiveMoveGenerator.cs	(revision 7907)
@@ -44,5 +44,5 @@
     }
 
-    private PotvinVehicleAssignmentExhaustiveMoveGenerator(PotvinVehicleAssignmentMoveGenerator original, Cloner cloner)
+    private PotvinVehicleAssignmentExhaustiveMoveGenerator(PotvinVehicleAssignmentExhaustiveMoveGenerator original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentMove.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentMove.cs	(revision 7907)
@@ -70,4 +70,7 @@
     }
 
+    [StorableConstructor]
+    protected PotvinVehicleAssignmentMove(bool deserializing) : base(deserializing) { }
+
     #region IVRPMove Members
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentMoveMaker.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentMoveMaker.cs	(revision 7907)
@@ -52,5 +52,5 @@
 
     [StorableConstructor]
-    private PotvinVehicleAssignmentMoveMaker(bool deserializing) : base(deserializing) { }
+    protected PotvinVehicleAssignmentMoveMaker(bool deserializing) : base(deserializing) { }
 
     public PotvinVehicleAssignmentMoveMaker()
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentMultiMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentMultiMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentMultiMoveGenerator.cs	(revision 7907)
@@ -56,5 +56,5 @@
     }
 
-    private PotvinVehicleAssignmentMultiMoveGenerator(PotvinVehicleAssignmentMoveGenerator original, Cloner cloner)
+    private PotvinVehicleAssignmentMultiMoveGenerator(PotvinVehicleAssignmentMultiMoveGenerator original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentSingleMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentSingleMoveGenerator.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/VehicleAssignment/PotvinVehicleAssignmentSingleMoveGenerator.cs	(revision 7907)
@@ -60,5 +60,5 @@
     }
 
-    private PotvinVehicleAssignmentSingleMoveGenerator(PotvinVehicleAssignmentMoveGenerator original, Cloner cloner)
+    private PotvinVehicleAssignmentSingleMoveGenerator(PotvinVehicleAssignmentSingleMoveGenerator original, Cloner cloner)
       : base(original, cloner) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Prins/PrinsEncoding.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Prins/PrinsEncoding.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Prins/PrinsEncoding.cs	(revision 7907)
@@ -140,5 +140,5 @@
 
     [StorableConstructor]
-    private PrinsEncoding(bool serializing)
+    protected PrinsEncoding(bool serializing)
       : base(serializing) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Tour.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Tour.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Tour.cs	(revision 7907)
@@ -48,4 +48,7 @@
     }
 
+    [StorableConstructor]
+    protected Tour(bool deserializing) : base(deserializing) { }
+
     public double GetTourLength(IVRPProblemInstance instance, IVRPEncoding solution) {
       double length = 0;
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/ZhuEncoding.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/ZhuEncoding.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Zhu/ZhuEncoding.cs	(revision 7907)
@@ -110,5 +110,5 @@
 
     [StorableConstructor]
-    private ZhuEncoding(bool serializing)
+    protected ZhuEncoding(bool serializing)
       : base(serializing) {
     }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/VehicleRoutingProblem.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/VehicleRoutingProblem.cs	(revision 7894)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/VehicleRoutingProblem.cs	(revision 7907)
@@ -143,4 +143,5 @@
 
     public override IDeepCloneable Clone(Cloner cloner) {
+      cloner.Clone(ProblemInstance);
       return new VehicleRoutingProblem(this, cloner);
     }
