Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpNetwork1.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpNetwork1.cs	(revision 14621)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpNetwork1.cs	(revision 14628)
@@ -26,4 +26,5 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Encodings.RealVectorEncoding;
 using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -50,6 +51,5 @@
 
       var cmaes = new CMAEvolutionStrategy();
-      var vp = new VariegationProblem();
-      vp.SetMaximization(false);
+      var vp = new MinimizationVariegationProblem<RealVectorEncoding>();
       cmaes.Problem = vp;
       cmaes.MaximumGenerations = 80;
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpNetwork2.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpNetwork2.cs	(revision 14621)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpNetwork2.cs	(revision 14628)
@@ -26,4 +26,5 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Encodings.RealVectorEncoding;
 using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -50,6 +51,5 @@
 
       var cmaes = new CMAEvolutionStrategy();
-      var vp = new VariegationProblem();
-      vp.SetMaximization(false);
+      var vp = new MinimizationVariegationProblem<RealVectorEncoding>();
       cmaes.Problem = vp;
       cmaes.MaximumGenerations = 80;
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpOrchestratorNode.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpOrchestratorNode.cs	(revision 14621)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpOrchestratorNode.cs	(revision 14628)
@@ -50,8 +50,9 @@
     protected const string FlpSolverName = "FlpSolver";
     protected const string VrpSolverName = "VrpSolver";
+    protected const string OrchestrationPortNameSuffix = "OrchestrationPort";
+    protected const string EvaluationPortNameSuffix = "EvaluationPort";
     #endregion
 
     protected CancellationTokenSource cts;
-    protected ResultCollection flpResults, vrpResults;
 
     [Storable]
@@ -309,10 +310,5 @@
 
     #region FlpSolver Message Handling
-    protected virtual void FlpSolverOrchestrationPortMessage(IMessage message) {
-      var results = (ResultCollection)message["Results"];
-      if (results.ContainsKey("Best Solution")) {
-        flpResults = results;
-      }
-    }
+    protected virtual void FlpSolverOrchestrationPortMessage(IMessage message) { }
 
     protected virtual void FlpSolverEvaluationPortMessage(IMessage message) { }
@@ -320,10 +316,5 @@
 
     #region VrpSolver Message Handling
-    protected virtual void VrpSolverOrchestrationPortMessage(IMessage message) {
-      var results = (ResultCollection)message["Results"];
-      if (results.ContainsKey("Best valid VRP Solution")) {
-        vrpResults = results;
-      }
-    }
+    protected virtual void VrpSolverOrchestrationPortMessage(IMessage message) { }
 
     private void VrpSolverEvaluationPortMessage(IMessage message) { }
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpOrchestratorNode1.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpOrchestratorNode1.cs	(revision 14621)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpOrchestratorNode1.cs	(revision 14628)
@@ -43,8 +43,8 @@
     public LrpOrchestratorNode1() : this("LrpOrchestratorNode1") { }
     public LrpOrchestratorNode1(string name) : base(name) {
-      MetaSolverOrchestrationPort = CreateOrchestrationPort<VariegationProblem>(MetaSolverName);
-      MetaSolverEvaluationPort = CreateEvaluationPort<RealVector>(MetaSolverName, "RealVector", "Quality");
-      FlpSolverOrchestrationPort = CreateOrchestrationPort<FacilityLocationProblem>(FlpSolverName);
-      VrpSolverOrchestrationPort = CreateOrchestrationPort<VehicleRoutingProblem>(VrpSolverName);
+      MetaSolverOrchestrationPort = CreateOrchestrationPort<MinimizationVariegationProblem<RealVectorEncoding>>(MetaSolverName + OrchestrationPortNameSuffix);
+      MetaSolverEvaluationPort = CreateEvaluationPort<RealVector>(MetaSolverName + EvaluationPortNameSuffix, "RealVector", "Quality");
+      FlpSolverOrchestrationPort = CreateOrchestrationPort<FacilityLocationProblem>(FlpSolverName + OrchestrationPortNameSuffix);
+      VrpSolverOrchestrationPort = CreateOrchestrationPort<VehicleRoutingProblem>(VrpSolverName + OrchestrationPortNameSuffix);
     }
 
@@ -60,5 +60,5 @@
       if (clearRuns) msgFlags |= OrchestrationMessage.ClearRuns;
       metaMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(msgFlags);
-      var problem = new VariegationProblem();
+      var problem = new MinimizationVariegationProblem<RealVectorEncoding>();
       problem.Encoding.Length = nrOfCustomers * 2;
       problem.Encoding.Bounds = new DoubleMatrix(new[,] { { -1.0, 1.0 } });
@@ -85,4 +85,5 @@
       cts.Token.ThrowIfCancellationRequested();
 
+      var flpResults = (ResultCollection)flpMsg["Results"];
       var bestFlpSolution = (IntegerVector)flpResults["Best Solution"].Value;
       var flpSolution = FlpParameter.Value.GetSolution(bestFlpSolution);
@@ -109,4 +110,5 @@
         cts.Token.ThrowIfCancellationRequested();
 
+        var vrpResults = (ResultCollection)vrpMsg["Results"];
         var bestVrpSolution = (VRPSolution)vrpResults["Best valid VRP Solution"].Value.Clone();
         vrpSolutions.Add(new Result("Depot " + depot.Key, bestVrpSolution));
Index: branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpOrchestratorNode2.cs
===================================================================
--- branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpOrchestratorNode2.cs	(revision 14621)
+++ branches/OptimizationNetworks/HeuristicLab.Networks.IntegratedOptimization.LocationRouting/3.3/LrpOrchestratorNode2.cs	(revision 14628)
@@ -43,8 +43,8 @@
     public LrpOrchestratorNode2() : this("LrpOrchestratorNode2") { }
     public LrpOrchestratorNode2(string name) : base(name) {
-      MetaSolverOrchestrationPort = CreateOrchestrationPort<VariegationProblem>(MetaSolverName);
-      MetaSolverEvaluationPort = CreateEvaluationPort<RealVector>(MetaSolverName, "RealVector", "Quality");
-      FlpSolverOrchestrationPort = CreateOrchestrationPort<FacilityLocationProblem>(FlpSolverName);
-      VrpSolverOrchestrationPort = CreateOrchestrationPort<VehicleRoutingProblem>(VrpSolverName);
+      MetaSolverOrchestrationPort = CreateOrchestrationPort<MinimizationVariegationProblem<RealVectorEncoding>>(MetaSolverName + OrchestrationPortNameSuffix);
+      MetaSolverEvaluationPort = CreateEvaluationPort<RealVector>(MetaSolverName + EvaluationPortNameSuffix, "RealVector", "Quality");
+      FlpSolverOrchestrationPort = CreateOrchestrationPort<FacilityLocationProblem>(FlpSolverName + OrchestrationPortNameSuffix);
+      VrpSolverOrchestrationPort = CreateOrchestrationPort<VehicleRoutingProblem>(VrpSolverName + OrchestrationPortNameSuffix);
     }
 
@@ -60,5 +60,5 @@
       if (clearRuns) msgFlags |= OrchestrationMessage.ClearRuns;
       metaMsg["OrchestrationMessage"] = new EnumValue<OrchestrationMessage>(msgFlags);
-      var problem = new VariegationProblem();
+      var problem = new MinimizationVariegationProblem<RealVectorEncoding>();
       problem.Encoding.Length = nrOfDepots * 2;
       problem.Encoding.Bounds = new DoubleMatrix(new[,] { { -1.0, 1.0 } });
@@ -85,4 +85,5 @@
       cts.Token.ThrowIfCancellationRequested();
 
+      var flpResults = (ResultCollection)flpMsg["Results"];
       var bestFlpSolution = (IntegerVector)flpResults["Best Solution"].Value;
       var flpSolution = FlpParameter.Value.GetSolution(bestFlpSolution);
@@ -109,4 +110,5 @@
         cts.Token.ThrowIfCancellationRequested();
 
+        var vrpResults = (ResultCollection)vrpMsg["Results"];
         var bestVrpSolution = (VRPSolution)vrpResults["Best valid VRP Solution"].Value.Clone();
         vrpSolutions.Add(new Result("Depot " + depot.Key, bestVrpSolution));
