Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/IntraRouteInversionMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/IntraRouteInversionMove.cs	(revision 4286)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/IntraRouteInversion/IntraRouteInversionMove.cs	(revision 4287)
@@ -31,4 +31,6 @@
   [StorableClass]
   public class IntraRouteInversionMove : TwoIndexMove, IVRPMove {
+    public IVRPEncoding Individual { get { return Permutation as AlbaEncoding; } }
+    
     public IntraRouteInversionMove()
       : base() {
@@ -41,4 +43,5 @@
     public IntraRouteInversionMove(int index1, int index2, AlbaEncoding permutation)
       : base(index1, index2, permutation) {
+        this.Permutation = permutation.Clone() as AlbaEncoding;
     }
 
@@ -57,5 +60,5 @@
 
     public TourEvaluation GetMoveQuality(
-      IVRPEncoding individual, IntValue vehicles,
+      IntValue vehicles,
       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
       DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
@@ -63,5 +66,5 @@
       DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
       ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
-        return IntraRouteInversionMoveEvaluator.GetMoveQuality(individual as AlbaEncoding, this, vehicles,
+        return IntraRouteInversionMoveEvaluator.GetMoveQuality(Permutation as AlbaEncoding, this, vehicles,
           dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
           coordinates, fleetUsageFactor, timeFactor, distanceFactor,
@@ -69,6 +72,8 @@
     }
 
-    public void MakeMove(IRandom random, IVRPEncoding individual) {
-      IntraRouteInversionMoveMaker.Apply(individual as AlbaEncoding, this);
+    public IVRPEncoding MakeMove(IRandom random) {
+      IntraRouteInversionMoveMaker.Apply(Individual as AlbaEncoding, this);
+
+      return Individual;
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/ExhaustiveLambdaInterchangeMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/ExhaustiveLambdaInterchangeMoveGenerator.cs	(revision 4286)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/ExhaustiveLambdaInterchangeMoveGenerator.cs	(revision 4287)
@@ -55,5 +55,5 @@
                   for(int index2 = 0; index2 < tour2.Cities.Count - length2 + 1; index2++) {
                     moves.Add(new LambdaInterchangeMove(tour1Index, index1, length1, 
-                      tour2Index, index2, length2));
+                      tour2Index, index2, length2, individual));
                   }
                 }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMove.cs	(revision 4286)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/LambdaInterchangeMove.cs	(revision 4287)
@@ -33,4 +33,7 @@
   public class LambdaInterchangeMove: Item, IVRPMove {
     [Storable]
+    public IVRPEncoding Individual { get; protected set; }
+    
+    [Storable]
     public int Tour1 { get; protected set; }
 
@@ -58,8 +61,10 @@
       Position2 = -1;
       Length2 = -1;
+
+      Individual = null;
     }
 
     public LambdaInterchangeMove(int tour1, int position1, int length1, 
-      int tour2, int position2, int length2) {
+      int tour2, int position2, int length2, AlbaEncoding permutation) {
         Tour1 = tour1;
         Position1 = position1;
@@ -69,4 +74,6 @@
         Position2 = position2;
         Length2 = length2;
+
+        this.Individual = permutation.Clone() as AlbaEncoding;
     }
 
@@ -82,4 +89,7 @@
       clone.Length2 = Length2;
 
+      if (Individual != null)
+        clone.Individual = (AlbaEncoding)cloner.Clone(Individual);
+
       cloner.RegisterClonedObject(this, clone);
       return clone;
@@ -89,5 +99,5 @@
 
     public TourEvaluation GetMoveQuality(
-      IVRPEncoding individual, IntValue vehicles,
+      IntValue vehicles,
       DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, 
       DoubleArray demandArray, DoubleValue capacity, DoubleMatrix coordinates,
@@ -95,5 +105,5 @@
       DoubleValue overloadPenalty, DoubleValue tardinessPenalty,
       ILookupParameter<DoubleMatrix> distanceMatrix, Data.BoolValue useDistanceMatrix) {
-        return LambdaInterchangeMoveEvaluator.GetMoveQuality(individual as AlbaEncoding, this,  vehicles,
+        return LambdaInterchangeMoveEvaluator.GetMoveQuality(Individual as AlbaEncoding, this, vehicles,
           dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity,
           coordinates, fleetUsageFactor, timeFactor, distanceFactor,
@@ -101,6 +111,8 @@
     }
 
-    public void MakeMove(IRandom random, IVRPEncoding individual) {
-      LambdaInterchangeMoveMaker.Apply(individual as AlbaEncoding, this);
+    public IVRPEncoding MakeMove(IRandom random) {
+      LambdaInterchangeMoveMaker.Apply(Individual as AlbaEncoding, this);
+
+      return Individual;
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/StochasticLambdaInterchangeSingleMoveGenerator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/StochasticLambdaInterchangeSingleMoveGenerator.cs	(revision 4286)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/LambdaInterchange/StochasticLambdaInterchangeSingleMoveGenerator.cs	(revision 4287)
@@ -74,5 +74,5 @@
       int index2 = rand.Next(route2.Cities.Count - length2 + 1);
 
-      return new LambdaInterchangeMove(route1Index, index1, length1, route2Index, index2, length2);
+      return new LambdaInterchangeMove(route1Index, index1, length1, route2Index, index2, length2, individual);
     }
 
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/Interfaces/IVRPMove.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/Interfaces/IVRPMove.cs	(revision 4286)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/Interfaces/IVRPMove.cs	(revision 4287)
@@ -27,5 +27,5 @@
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
   public interface IVRPMove : IItem {
-    TourEvaluation GetMoveQuality(IVRPEncoding individual,  IntValue vehicles,
+    TourEvaluation GetMoveQuality(IntValue vehicles,
         DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, 
         DoubleValue capacity,DoubleMatrix coordinates,
@@ -34,5 +34,5 @@
       ILookupParameter<DoubleMatrix> distanceMatrix, BoolValue useDistanceMatrix);
 
-    void MakeMove(IRandom random, IVRPEncoding individual);
+    IVRPEncoding MakeMove(IRandom random);
   }
 }
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveEvaluator.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveEvaluator.cs	(revision 4286)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveEvaluator.cs	(revision 4287)
@@ -46,5 +46,4 @@
 
       return move.GetMoveQuality(
-        VRPToursParameter.ActualValue,
         VehiclesParameter.ActualValue,
         DueTimeParameter.ActualValue,
Index: branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveMaker.cs
===================================================================
--- branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveMaker.cs	(revision 4286)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveMaker.cs	(revision 4287)
@@ -114,5 +114,5 @@
      
       //perform move
-      move.MakeMove(RandomParameter.ActualValue, VRPToursParameter.ActualValue);
+      VRPToursParameter.ActualValue = move.MakeMove(RandomParameter.ActualValue);
 
       quality.Value = moveQuality.Value;
