Index: branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/Improvers/VRPImprovementOperator.cs
===================================================================
--- branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/Improvers/VRPImprovementOperator.cs	(revision 8304)
+++ branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/Improvers/VRPImprovementOperator.cs	(revision 8319)
@@ -37,5 +37,5 @@
   [Item("VRPImprovementOperator", "An operator that improves vehicle routing solutions.")]
   [StorableClass]
-  public sealed class VRPImprovementOperator : SingleSuccessorOperator, IImprovementOperator {
+  public sealed class VRPImprovementOperator : SingleSuccessorOperator, ISingleObjectiveImprovementOperator {
     #region Parameter properties
     public ILookupParameter<DoubleValue> CapacityParameter {
@@ -90,6 +90,6 @@
       get { return (ILookupParameter<DoubleValue>)Parameters["EvalTardinessPenalty"]; }
     }
-    public IValueLookupParameter<IItem> TargetParameter {
-      get { return (IValueLookupParameter<IItem>)Parameters["Target"]; }
+    public IValueLookupParameter<IItem> SolutionParameter {
+      get { return (IValueLookupParameter<IItem>)Parameters["Solution"]; }
     }
     public ILookupParameter<DoubleValue> EvalTimeFactorParameter {
@@ -127,5 +127,5 @@
       Parameters.Add(new LookupParameter<DoubleArray>("ServiceTime", "The service time of each customer."));
       Parameters.Add(new LookupParameter<DoubleValue>("EvalTardinessPenalty", "The tardiness penalty considered in the evaluation."));
-      Parameters.Add(new ValueLookupParameter<IItem>("Target", "This parameter is used for name translation only."));
+      Parameters.Add(new ValueLookupParameter<IItem>("Solution", "The solution to be improved. This parameter is used for name translation only."));
       Parameters.Add(new LookupParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation."));
       Parameters.Add(new LookupParameter<BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false"));
@@ -139,7 +139,7 @@
 
     public override IOperation Apply() {
-      AlbaEncoding solution = TargetParameter.ActualValue is AlbaEncoding ?
-        TargetParameter.ActualValue as AlbaEncoding :
-        AlbaEncoding.ConvertFrom(TargetParameter.ActualValue as IVRPEncoding, VehiclesParameter.ActualValue.Value, DistanceMatrixParameter);
+      AlbaEncoding solution = SolutionParameter.ActualValue is AlbaEncoding ?
+        SolutionParameter.ActualValue as AlbaEncoding :
+        AlbaEncoding.ConvertFrom(SolutionParameter.ActualValue as IVRPEncoding, VehiclesParameter.ActualValue.Value, DistanceMatrixParameter);
 
       if (solution == null)
@@ -156,5 +156,5 @@
         EvalTardinessPenaltyParameter.ActualValue, UseDistanceMatrixParameter.ActualValue);
 
-      TargetParameter.ActualValue = PotvinEncoding.ConvertFrom(solution, DistanceMatrixParameter);
+      SolutionParameter.ActualValue = PotvinEncoding.ConvertFrom(solution, DistanceMatrixParameter);
       CurrentScopeParameter.ActualValue.Variables.Add(new Variable("LocalEvaluatedSolutions", new IntValue(evaluatedSolutions)));
 
Index: branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/PathRelinkers/VRPPathRelinker.cs
===================================================================
--- branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/PathRelinkers/VRPPathRelinker.cs	(revision 8304)
+++ branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/PathRelinkers/VRPPathRelinker.cs	(revision 8319)
@@ -39,5 +39,5 @@
   [Item("VRPPathRelinker", "An operator that relinks paths between vehicle routing solutions.")]
   [StorableClass]
-  public sealed class VRPPathRelinker : PathRelinker, IStochasticOperator {
+  public sealed class VRPPathRelinker : SingleObjectivePathRelinker, IStochasticOperator {
     #region Parameters
     public ILookupParameter<DoubleMatrix> CoordinatesParameter {
Index: branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/SimilarityCalculators/VRPSimilarityCalculator.cs
===================================================================
--- branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/SimilarityCalculators/VRPSimilarityCalculator.cs	(revision 8304)
+++ branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/SimilarityCalculators/VRPSimilarityCalculator.cs	(revision 8319)
@@ -33,6 +33,9 @@
   /// An operator that performs similarity calculation between two vehicle routing solutions.
   /// </summary>
+  /// <remarks>
+  /// The operator calculates the similarity based on the number of edges the two solutions have in common.
+  /// </remarks>
   [Item("VRPSimilarityCalculator", "An operator that performs similarity calculation between two vehicle routing solutions.")]
-  public sealed class VRPSimilarityCalculator : SimilarityCalculator {
+  public sealed class VRPSimilarityCalculator : SingleObjectiveSolutionSimilarityCalculator {
     private VRPSimilarityCalculator(bool deserializing) : base(deserializing) { }
     private VRPSimilarityCalculator(VRPSimilarityCalculator original, Cloner cloner) : base(original, cloner) { }
@@ -78,7 +81,7 @@
     }
 
-    public override double CalculateIndividualSimilarity(IScope left, IScope right) {
-      var sol1 = left.Variables[Target].Value as PotvinEncoding;
-      var sol2 = right.Variables[Target].Value as PotvinEncoding;
+    public override double CalculateSolutionSimilarity(IScope leftSolution, IScope rightSolution) {
+      var sol1 = leftSolution.Variables[SolutionVariableName].Value as PotvinEncoding;
+      var sol2 = rightSolution.Variables[SolutionVariableName].Value as PotvinEncoding;
 
       return CalculateSimilarity(sol1, sol2);
Index: branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs
===================================================================
--- branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs	(revision 8304)
+++ branches/ScatterSearch (trunk integration)/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs	(revision 8319)
@@ -518,17 +518,17 @@
       }
 
-      foreach (var op in Operators.OfType<IVRPMultiNeighborhoodShakingOperator>()) {
+      foreach (IVRPMultiNeighborhoodShakingOperator op in Operators.OfType<IVRPMultiNeighborhoodShakingOperator>()) {
         op.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
       }
-      foreach (IImprovementOperator op in Operators.OfType<IImprovementOperator>()) {
-        op.TargetParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
-        op.TargetParameter.Hidden = true;
-      }
-      foreach (IPathRelinker op in Operators.OfType<IPathRelinker>()) {
+      foreach (ISingleObjectiveImprovementOperator op in Operators.OfType<ISingleObjectiveImprovementOperator>()) {
+        op.SolutionParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
+        op.SolutionParameter.Hidden = true;
+      }
+      foreach (ISingleObjectivePathRelinker op in Operators.OfType<ISingleObjectivePathRelinker>()) {
         op.ParentsParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName;
         op.ParentsParameter.Hidden = true;
       }
-      foreach (ISimilarityCalculator op in Operators.OfType<ISimilarityCalculator>()) {
-        op.Target = SolutionCreator.VRPToursParameter.ActualName;
+      foreach (VRPSimilarityCalculator op in Operators.OfType<VRPSimilarityCalculator>()) {
+        op.SolutionVariableName = SolutionCreator.VRPToursParameter.ActualName;
       }
     }
