Index: /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/AlbaEncoding.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/AlbaEncoding.cs	(revision 17703)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/AlbaEncoding.cs	(revision 17704)
@@ -28,4 +28,5 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.VehicleRouting.Interfaces;
 
 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba {
@@ -54,5 +55,7 @@
     static AlbaEncoding() {
       encodingSpecificOperatorTypes = new List<Type>() {
-          typeof (IAlbaOperator)
+          typeof (IAlbaOperator),
+          typeof (IVRPCreator),
+          typeof (IMultiVRPOperator)
       };
     }
@@ -63,4 +66,11 @@
       var newOperators = operators.Except(Operators, new TypeEqualityComparer<IOperator>()).ToList();
 
+      foreach (var op in newOperators.OfType<IMultiVRPOperator>().ToList()) {
+        op.SetOperators(Operators.Concat(newOperators));
+        if (!op.Operators.Any()) newOperators.Remove(op);
+      }
+      foreach (var op in Operators.OfType<IMultiVRPOperator>()) {
+        op.SetOperators(newOperators);
+      }
       ConfigureOperators(newOperators);
       foreach (var @operator in newOperators)
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/LocalImprovement/AlbaLambdaInterchangeLocalImprovementOperator.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/LocalImprovement/AlbaLambdaInterchangeLocalImprovementOperator.cs	(revision 17703)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/Alba/LocalImprovement/AlbaLambdaInterchangeLocalImprovementOperator.cs	(revision 17704)
@@ -20,9 +20,9 @@
 #endregion
 
+using HEAL.Attic;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
 using HeuristicLab.Optimization;
-using HeuristicLab.Core;
-using HEAL.Attic;
-using HeuristicLab.Data;
-using HeuristicLab.Common;
 using HeuristicLab.Parameters;
 using HeuristicLab.Problems.VehicleRouting.Interfaces;
@@ -31,5 +31,5 @@
   [Item("AlbaLambdaInterchangeLocalImprovementOperator", "Takes a solution and finds the local optimum with respect to the lambda interchange neighborhood by decending along the steepest gradient.")]
   [StorableType("84981F03-B886-4ADD-8DB5-C12628404335")]
-  public class AlbaLambdaInterchangeLocalImprovementOperator : VRPOperator, IStochasticOperator, ILocalImprovementOperator, ISingleObjectiveOperator {
+  public class AlbaLambdaInterchangeLocalImprovementOperator : VRPOperator, IStochasticOperator, ILocalImprovementOperator, ISingleObjectiveOperator, IAlbaOperator {
 
     public IValueLookupParameter<IntValue> MaximumIterationsParameter {
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Interfaces/IMultiVRPOperator.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Interfaces/IMultiVRPOperator.cs	(revision 17703)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/Interfaces/IMultiVRPOperator.cs	(revision 17704)
@@ -21,10 +21,10 @@
 
 using System.Collections.Generic;
+using HEAL.Attic;
 using HeuristicLab.Core;
-using HEAL.Attic;
 
 namespace HeuristicLab.Problems.VehicleRouting.Interfaces {
   [StorableType("4ED07F1F-AC5F-4771-8916-AF7DD576C581")]
-  interface IMultiVRPOperator : IVRPOperator {
+  interface IMultiVRPOperator : IVRPOperator, IMultiOperator {
     void SetOperators(IEnumerable<IOperator> operators);
   }
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/VehicleRoutingProblem.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/VehicleRoutingProblem.cs	(revision 17703)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Problems.VehicleRouting/3.4/VehicleRoutingProblem.cs	(revision 17704)
@@ -39,5 +39,4 @@
 using HeuristicLab.Problems.VehicleRouting.Interpreters;
 using HeuristicLab.Problems.VehicleRouting.ProblemInstances;
-using HeuristicLab.Problems.VehicleRouting.Variants;
 
 namespace HeuristicLab.Problems.VehicleRouting {
@@ -151,8 +150,8 @@
 
     void ProblemInstanceParameter_ValueChanged(object sender, EventArgs e) {
-      InitializeOperators();
-      AttachProblemInstanceEventHandlers();
-
-      OnOperatorsChanged();
+      //InitializeOperators();
+      AttachProblemInstanceEventHandlers();
+
+      //OnOperatorsChanged();
     }
 
@@ -167,26 +166,7 @@
 
     private void InitializeOperators() {
-      Operators.Clear();
-
-      if (ProblemInstance != null) {
-        Operators.AddRange(
-        ProblemInstance.Operators.Concat(
-          ApplicationManager.Manager.GetInstances<IGeneralVRPOperator>().Cast<IOperator>()).OrderBy(op => op.Name));
-        Operators.Add(new VRPSimilarityCalculator());
-        Operators.Add(new QualitySimilarityCalculator());
-        Operators.Add(new PopulationSimilarityAnalyzer(Operators.OfType<ISolutionSimilarityCalculator>()));
-
-        IVRPCreator defaultCreator = null;
-        /*foreach (IVRPCreator creator in Operators.Where(o => o is IVRPCreator)) {
-          solutionCreatorParameter.ValidValues.Add(creator);
-          if (creator is Encodings.Alba.RandomCreator)
-            defaultCreator = creator;
-        }*/
-        Operators.Add(new AlbaLambdaInterchangeLocalImprovementOperator());
-        /*if (defaultCreator != null)
-          solutionCreatorParameter.Value = defaultCreator;*/
-      }
-
-      Parameterize();
+      Operators.Add(new VRPSimilarityCalculator());
+      Operators.Add(new QualitySimilarityCalculator());
+      Operators.Add(new PopulationSimilarityAnalyzer(Operators.OfType<ISolutionSimilarityCalculator>()));
     }
 
@@ -197,24 +177,9 @@
 
     private void Parameterize() {
-      foreach (IOperator op in Operators.OfType<IOperator>()) {
-        if (op is IMultiVRPOperator) {
-          (op as IMultiVRPOperator).SetOperators(Operators.OfType<IOperator>());
-        }
-      }
-      if (Parameters.ContainsKey("ProblemInstance") && ProblemInstance != null) {
-        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 (ISolutionSimilarityCalculator op in Operators.OfType<ISolutionSimilarityCalculator>()) {
-          //op.SolutionVariableName = SolutionCreator.VRPToursParameter.ActualName;
-          op.QualityVariableName = ProblemInstance.SolutionEvaluator.QualityParameter.ActualName;
-          var calc = op as VRPSimilarityCalculator;
-          if (calc != null) calc.ProblemInstance = ProblemInstance;
-        }
+      foreach (ISolutionSimilarityCalculator op in Operators.OfType<ISolutionSimilarityCalculator>()) {
+        op.SolutionVariableName = Encoding.Name;
+        op.QualityVariableName = Evaluator.QualityParameter.ActualName;
+        var calc = op as VRPSimilarityCalculator;
+        if (calc != null) calc.ProblemInstance = ProblemInstance;
       }
     }
