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 6909)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDExchange/PotvinPDExchangeMoveMaker.cs	(revision 6960)
@@ -80,6 +80,6 @@
         tour.Stops.Remove(move.Replaced);
 
-        PotvinPDRearrangeMoveMaker.InsertPair(solution, tour, move.City, pdp.GetPickupDeliveryLocation(move.City), problemInstance);
-        PotvinPDRearrangeMoveMaker.InsertPair(solution, oldTour, move.Replaced, pdp.GetPickupDeliveryLocation(move.Replaced), problemInstance);
+        solution.InsertPair(tour, move.City, pdp.GetPickupDeliveryLocation(move.City), problemInstance);
+        solution.InsertPair(oldTour, move.Replaced, pdp.GetPickupDeliveryLocation(move.Replaced), problemInstance);
       } else {
         tour.Stops.Remove(move.Replaced);
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 6909)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDRearrange/PotvinPDRearrangeMoveMaker.cs	(revision 6960)
@@ -59,36 +59,4 @@
     }
 
-    public static void InsertPair(PotvinEncoding solution, Tour tour, int source, int target, IVRPProblemInstance problemInstance, int positionToAvoid = -1, int positionToAvoid2 = -1) {
-      int stops = tour.Stops.Count;
-      VRPEvaluation eval = problemInstance.EvaluateTour(tour, solution);
-      double minCosts = double.MaxValue;
-      int sourceLocation = -1;
-      int targetLocation = -1;
-
-      for (int i = 0; i <= stops; i++) {
-        tour.Stops.Insert(i, source);
-        VRPEvaluation tourEval = problemInstance.EvaluateTour(tour, solution);
-        double sourceCosts = tourEval.Quality - eval.Quality;
-
-        for (int j = i + 1; j <= stops + 1; j++) {
-          if (positionToAvoid != i || positionToAvoid2 != j || stops == 0) {
-            bool feasible;
-            double targetCosts = problemInstance.GetInsertionCosts(tourEval, solution, target, 0, j, out feasible);
-
-            double costs = sourceCosts + targetCosts;
-            if (costs < minCosts) {
-              minCosts = costs;
-              sourceLocation = i;
-              targetLocation = j;
-            }
-          }
-        }
-        tour.Stops.Remove(source);
-      }
-
-      tour.Stops.Insert(sourceLocation, source);
-      tour.Stops.Insert(targetLocation, target);
-    }
-
     public static void Apply(PotvinEncoding solution, PotvinPDRearrangeMove move, IVRPProblemInstance problemInstance) {
       Tour tour = solution.Tours[move.Tour];
@@ -104,5 +72,5 @@
         tour2.Stops.Remove(location);
 
-        PotvinPDRearrangeMoveMaker.InsertPair(solution, tour, move.City, location, problemInstance, position, position2);
+        solution.InsertPair(tour, move.City, location, problemInstance, position, position2);
       } else {
         tour.Stops.Remove(move.City);
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 6909)
+++ branches/VRP/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Potvin/Moves/PickupDelivery/PDShift/PotvinPDShiftMoveMaker.cs	(revision 6960)
@@ -74,5 +74,5 @@
         oldTour2.Stops.Remove(location);
 
-        PotvinPDRearrangeMoveMaker.InsertPair(solution, tour, move.City, location, problemInstance);
+        solution.InsertPair(tour, move.City, location, problemInstance);
       } else {
         int place = solution.FindBestInsertionPlace(tour, move.City);
