Index: branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/ExternalEvaluationProblem.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/ExternalEvaluationProblem.cs	(revision 16723)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/ExternalEvaluationProblem.cs	(revision 16751)
@@ -40,5 +40,5 @@
   // BackwardsCompatibility3.3
   // Rename class to SingleObjectiveExternalEvaluationProblem
-  public class ExternalEvaluationProblem : SingleObjectiveProblem<IEncoding<ISolution>, ISolution>, IExternalEvaluationProblem {
+  public class ExternalEvaluationProblem : SingleObjectiveProblem<IEncoding<IEncodedSolution>, IEncodedSolution>, IExternalEvaluationProblem {
 
     public static new Image StaticItemImage {
@@ -66,5 +66,5 @@
 
     #region Properties
-    public new IEncoding<ISolution> Encoding {
+    public new IEncoding<IEncodedSolution> Encoding {
       get { return base.Encoding; }
       set { base.Encoding = value; }
@@ -114,5 +114,5 @@
     }
 
-    public override double Evaluate(ISolution individual, IRandom random) {
+    public override double Evaluate(IEncodedSolution individual, IRandom random) {
       var qualityMessage = Evaluate(BuildSolutionMessage(individual));
       if (!qualityMessage.HasExtension(SingleObjectiveQualityMessage.QualityMessage_))
@@ -126,9 +126,9 @@
     }
 
-    public override void Analyze(ISolution[] individuals, double[] qualities, ResultCollection results, IRandom random) {
+    public override void Analyze(IEncodedSolution[] individuals, double[] qualities, ResultCollection results, IRandom random) {
       OptimizationSupport.Analyze(individuals, qualities, results, random);
     }
 
-    public override IEnumerable<ISolution> GetNeighbors(ISolution individual, IRandom random) {
+    public override IEnumerable<IEncodedSolution> GetNeighbors(IEncodedSolution individual, IRandom random) {
       return OptimizationSupport.GetNeighbors(individual, random);
     }
@@ -167,10 +167,10 @@
     }
 
-    private SolutionMessage BuildSolutionMessage(ISolution solution, int solutionId = 0) {
+    private SolutionMessage BuildSolutionMessage(IEncodedSolution solution, int solutionId = 0) {
       lock (clientLock) {
         SolutionMessage.Builder protobufBuilder = SolutionMessage.CreateBuilder();
         protobufBuilder.SolutionId = solutionId;
         var scope = new Scope();
-        ScopeUtil.CopySolutionToScope(scope, Encoding, solution);
+        ScopeUtil.CopyEncodedSolutionToScope(scope, Encoding, solution);
         foreach (var variable in scope.Variables) {
           try {
Index: branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Interfaces/IMultiObjectiveOptimizationSupport.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Interfaces/IMultiObjectiveOptimizationSupport.cs	(revision 16723)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Interfaces/IMultiObjectiveOptimizationSupport.cs	(revision 16751)
@@ -27,5 +27,5 @@
   [StorableType("f924ef9c-d824-40d2-89b2-6dd1220df98b")]
   public interface IMultiObjectiveOptimizationSupport {
-    void Analyze(ISolution[] individuals, double[][] qualities, ResultCollection results, IRandom random);
+    void Analyze(IEncodedSolution[] individuals, double[][] qualities, ResultCollection results, IRandom random);
   }
 }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Interfaces/ISingleObjectiveOptimizationSupport.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Interfaces/ISingleObjectiveOptimizationSupport.cs	(revision 16723)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Interfaces/ISingleObjectiveOptimizationSupport.cs	(revision 16751)
@@ -28,6 +28,6 @@
   [StorableType("09d522e0-c10f-474c-b7c0-7d7f98e63f44")]
   public interface ISingleObjectiveOptimizationSupport {
-    void Analyze(ISolution[] individuals, double[] qualities, ResultCollection results, IRandom random);
-    IEnumerable<ISolution> GetNeighbors(ISolution individual, IRandom random);
+    void Analyze(IEncodedSolution[] individuals, double[] qualities, ResultCollection results, IRandom random);
+    IEnumerable<IEncodedSolution> GetNeighbors(IEncodedSolution individual, IRandom random);
   }
 }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/MultiObjectiveExternalEvaluationProblem.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/MultiObjectiveExternalEvaluationProblem.cs	(revision 16723)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/MultiObjectiveExternalEvaluationProblem.cs	(revision 16751)
@@ -37,5 +37,5 @@
   [Creatable(CreatableAttribute.Categories.ExternalEvaluationProblems, Priority = 200)]
   [StorableType("CCA50199-A6AB-4C84-B4FA-0262CAF416EC")]
-  public class MultiObjectiveExternalEvaluationProblem : MultiObjectiveProblem<IEncoding<ISolution>, ISolution>, IExternalEvaluationProblem {
+  public class MultiObjectiveExternalEvaluationProblem : MultiObjectiveProblem<IEncoding<IEncodedSolution>, IEncodedSolution>, IExternalEvaluationProblem {
 
     public static new Image StaticItemImage {
@@ -63,5 +63,5 @@
 
     #region Properties
-    public new IEncoding<ISolution> Encoding {
+    public new IEncoding<IEncodedSolution> Encoding {
       get { return base.Encoding; }
       set { base.Encoding = value; }
@@ -114,5 +114,5 @@
     }
 
-    public override double[] Evaluate(ISolution individual, IRandom random) {
+    public override double[] Evaluate(IEncodedSolution individual, IRandom random) {
       var qualityMessage = Evaluate(BuildSolutionMessage(individual));
       if (!qualityMessage.HasExtension(MultiObjectiveQualityMessage.QualityMessage_))
@@ -126,5 +126,5 @@
     }
 
-    public override void Analyze(ISolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) {
+    public override void Analyze(IEncodedSolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) {
       OptimizationSupport.Analyze(individuals, qualities, results, random);
     }
@@ -164,10 +164,10 @@
     }
 
-    private SolutionMessage BuildSolutionMessage(ISolution solution, int solutionId = 0) {
+    private SolutionMessage BuildSolutionMessage(IEncodedSolution solution, int solutionId = 0) {
       lock (clientLock) {
         SolutionMessage.Builder protobufBuilder = SolutionMessage.CreateBuilder();
         protobufBuilder.SolutionId = solutionId;
         var scope = new Scope();
-        ScopeUtil.CopySolutionToScope(scope, Encoding, solution);
+        ScopeUtil.CopyEncodedSolutionToScope(scope, Encoding, solution);
         foreach (var variable in scope.Variables) {
           try {
Index: branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/CompiledMultiObjectiveOptimizationSupport.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/CompiledMultiObjectiveOptimizationSupport.cs	(revision 16723)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/CompiledMultiObjectiveOptimizationSupport.cs	(revision 16751)
@@ -5,5 +5,5 @@
   public class CompiledMultiObjectiveOptimizationSupport : CompiledOptimizationSupport, IMultiObjectiveOptimizationSupport {
 
-    public void Analyze(ISolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) {
+    public void Analyze(IEncodedSolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) {
       // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
       // Write or update results given the range of vectors and resulting qualities
Index: branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/CompiledSingleObjectiveOptimizationSupport.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/CompiledSingleObjectiveOptimizationSupport.cs	(revision 16723)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/CompiledSingleObjectiveOptimizationSupport.cs	(revision 16751)
@@ -6,5 +6,5 @@
   public class CompiledSingleObjectiveOptimizationSupport : CompiledOptimizationSupport, ISingleObjectiveOptimizationSupport {
 
-    public void Analyze(ISolution[] individuals, double[] qualities, ResultCollection results, IRandom random) {
+    public void Analyze(IEncodedSolution[] individuals, double[] qualities, ResultCollection results, IRandom random) {
       // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
       // Write or update results given the range of vectors and resulting qualities
@@ -17,5 +17,5 @@
     }
 
-    public IEnumerable<ISolution> GetNeighbors(ISolution individual, IRandom random) {
+    public IEnumerable<IEncodedSolution> GetNeighbors(IEncodedSolution individual, IRandom random) {
       // Use vars.yourVariable to access variables in the variable store i.e. yourVariable
       // Create new vectors, based on the given one that represent small changes
@@ -24,5 +24,5 @@
         // Algorithm will draw only a finite amount of samples
         // Change to a for-loop to return a concrete amount of neighbors
-        var neighbor = (ISolution)individual.Clone();
+        var neighbor = (IEncodedSolution)individual.Clone();
         // For instance, perform a single bit-flip in a binary parameter
         //var bIndex = random.Next(neighbor.BinaryVector("b").Length);
Index: branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/MultiObjectiveOptimizationSupportScript.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/MultiObjectiveOptimizationSupportScript.cs	(revision 16723)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/MultiObjectiveOptimizationSupportScript.cs	(revision 16751)
@@ -39,5 +39,5 @@
     }
 
-    void IMultiObjectiveOptimizationSupport.Analyze(ISolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) {
+    void IMultiObjectiveOptimizationSupport.Analyze(IEncodedSolution[] individuals, double[][] qualities, ResultCollection results, IRandom random) {
       CompiledInstance.Analyze(individuals, qualities, results, random);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/SingleObjectiveOptimizationSupportScript.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/SingleObjectiveOptimizationSupportScript.cs	(revision 16723)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Problems.ExternalEvaluation/3.4/Programmable/SingleObjectiveOptimizationSupportScript.cs	(revision 16751)
@@ -40,9 +40,9 @@
     }
 
-    void ISingleObjectiveOptimizationSupport.Analyze(ISolution[] individuals, double[] qualities, ResultCollection results, IRandom random) {
+    void ISingleObjectiveOptimizationSupport.Analyze(IEncodedSolution[] individuals, double[] qualities, ResultCollection results, IRandom random) {
       CompiledInstance.Analyze(individuals, qualities, results, random);
     }
 
-    IEnumerable<ISolution> ISingleObjectiveOptimizationSupport.GetNeighbors(ISolution individual, IRandom random) {
+    IEnumerable<IEncodedSolution> ISingleObjectiveOptimizationSupport.GetNeighbors(IEncodedSolution individual, IRandom random) {
       return CompiledInstance.GetNeighbors(individual, random);
     }
