Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/HeuristicLab.Encodings.ScheduleEncoding-3.3.csproj
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/HeuristicLab.Encodings.ScheduleEncoding-3.3.csproj	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/HeuristicLab.Encodings.ScheduleEncoding-3.3.csproj	(revision 17461)
@@ -128,5 +128,5 @@
     <Compile Include="Interfaces\IScheduleCreator.cs" />
     <Compile Include="Interfaces\IScheduleCrossover.cs" />
-    <Compile Include="Interfaces\ISchedule.cs" />
+    <Compile Include="Interfaces\IScheduleSolution.cs" />
     <Compile Include="Interfaces\IScheduleDecoder.cs" />
     <Compile Include="Interfaces\IScheduleEncoding.cs" />
@@ -138,5 +138,5 @@
     <Compile Include="JobSequenceMatrix\Crossovers\JSMSXXCrossover.cs" />
     <Compile Include="JobSequenceMatrix\JobSequenceMatrixEncoding.cs" />
-    <Compile Include="JobSequenceMatrix\JSMEncoding.cs" />
+    <Compile Include="JobSequenceMatrix\JSM.cs" />
     <Compile Include="JobSequenceMatrix\JSMRandomCreator.cs" />
     <Compile Include="JobSequenceMatrix\Manipulators\JSMManipulator.cs" />
@@ -149,5 +149,5 @@
     <Compile Include="PermutationWithRepetition\Manipulators\PWRInsertionManipulator.cs" />
     <Compile Include="PermutationWithRepetition\PermutationWithRepetitionEncoding.cs" />
-    <Compile Include="PermutationWithRepetition\PWREncoding.cs" />
+    <Compile Include="PermutationWithRepetition\PWR.cs" />
     <Compile Include="PermutationWithRepetition\PWRRandomCreator.cs" />
     <Compile Include="Plugin.cs" />
@@ -158,5 +158,5 @@
     <Compile Include="PriorityRulesVector\Manipulators\PRVUniformOnePositionManipulator.cs" />
     <Compile Include="PriorityRulesVector\PriorityRulesVectorEncoding.cs" />
-    <Compile Include="PriorityRulesVector\PRVEncoding.cs" />
+    <Compile Include="PriorityRulesVector\PRV.cs" />
     <Compile Include="PriorityRulesVector\PRVRandomCreator.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/ISchedule.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/ISchedule.cs	(revision 17360)
+++ 	(revision )
@@ -1,27 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.Optimization;
-
-namespace HeuristicLab.Encodings.ScheduleEncoding {
-  public interface ISchedule : IEncodedSolution {
-  }
-}
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCreator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCreator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCreator.cs	(revision 17461)
@@ -28,5 +28,5 @@
   [StorableType("d6738639-c5fc-46af-8997-7527ea718759")]
   public interface IScheduleCreator<TSchedule> : ISolutionCreator<TSchedule>, IScheduleOperator
-  where TSchedule : class,ISchedule {
+  where TSchedule : class, IScheduleSolution {
     ILookupParameter<TSchedule> ScheduleParameter { get; }
     IValueLookupParameter<IntValue> JobsParameter { get; }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCrossover.cs	(revision 17461)
@@ -27,6 +27,6 @@
   [StorableType("809a6136-3a7a-4389-9119-2bb48f6d650a")]
   public interface IScheduleCrossover : ICrossover, IScheduleOperator {
-    ILookupParameter<ISchedule> ChildParameter { get; }
-    IScopeTreeLookupParameter<ISchedule> ParentsParameter { get; }
+    ILookupParameter<IScheduleSolution> ChildParameter { get; }
+    IScopeTreeLookupParameter<IScheduleSolution> ParentsParameter { get; }
   }
 }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleDecoder.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleDecoder.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleDecoder.cs	(revision 17461)
@@ -26,13 +26,13 @@
   [StorableType("010C752F-0F5E-4B93-8695-8DD74903DBE7")]
   public interface IScheduleDecoder : IScheduleOperator {
-    ILookupParameter<ISchedule> ScheduleEncodingParameter { get; }
+    ILookupParameter<IScheduleSolution> ScheduleEncodingParameter { get; }
     ILookupParameter<Schedule> ScheduleParameter { get; }
     ILookupParameter<ItemList<Job>> JobDataParameter { get; }
 
-    Schedule DecodeSchedule(ISchedule solution, ItemList<Job> jobData);
+    Schedule DecodeSchedule(IScheduleSolution solution, ItemList<Job> jobData);
   }
 
   public interface IScheduleDecoder<TSchedule> : IScheduleDecoder
-    where TSchedule : class, ISchedule {
+    where TSchedule : class, IScheduleSolution {
     Schedule DecodeSchedule(TSchedule solution, ItemList<Job> jobData);
   }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEncoding.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEncoding.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEncoding.cs	(revision 17461)
@@ -22,13 +22,13 @@
 #endregion
 
+using HEAL.Attic;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
 using HeuristicLab.Optimization;
-using HEAL.Attic;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   [StorableType("09b9d24c-2576-495a-b06c-338d095cba0d")]
-  public interface IScheduleEncoding : IEncoding<ISchedule> {
-    IFixedValueParameter<ItemList<Job>> JobDataParameter { get; set; }
+  public interface IScheduleEncoding : IEncoding<IScheduleSolution> {
+    IValueParameter<ItemList<Job>> JobDataParameter { get; set; }
     IFixedValueParameter<IntValue> JobsParameter { get; set; }
     IFixedValueParameter<IntValue> ResourcesParameter { get; set; }
@@ -39,9 +39,9 @@
 
 
-    Schedule Decode(ISchedule schedule, ItemList<Job> jobData);
+    Schedule Decode(IScheduleSolution schedule, ItemList<Job> jobData);
   }
 
   public interface IScheduleEncoding<TSchedule> : IEncoding<TSchedule>
-    where TSchedule : class, ISchedule {
+    where TSchedule : class, IScheduleSolution {
 
   }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleManipulator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleManipulator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleManipulator.cs	(revision 17461)
@@ -27,5 +27,5 @@
   [StorableType("aa89fd6f-db49-457d-abc9-5600aa8f24e5")]
   public interface IScheduleManipulator : IManipulator, IScheduleOperator {
-    ILookupParameter<ISchedule> ScheduleParameter { get; }
+    ILookupParameter<IScheduleSolution> ScheduleParameter { get; }
   }
 }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleSolution.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleSolution.cs	(revision 17461)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleSolution.cs	(revision 17461)
@@ -0,0 +1,26 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using HeuristicLab.Optimization;
+
+namespace HeuristicLab.Encodings.ScheduleEncoding {
+  public interface IScheduleSolution : IEncodedSolution { }
+}
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMCrossover.cs	(revision 17461)
@@ -35,5 +35,5 @@
     public JSMCrossover() : base() { }
 
-    public abstract JSMEncoding Cross(IRandom random, JSMEncoding parent1, JSMEncoding parent2);
+    public abstract JSM Cross(IRandom random, JSM parent1, JSM parent2);
 
     public override IOperation InstrumentedApply() {
@@ -41,5 +41,5 @@
 
       ChildParameter.ActualValue =
-        Cross(RandomParameter.ActualValue, parents[0] as JSMEncoding, parents[1] as JSMEncoding);
+        Cross(RandomParameter.ActualValue, parents[0] as JSM, parents[1] as JSM);
 
       return base.InstrumentedApply();
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMJOXCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMJOXCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMJOXCrossover.cs	(revision 17461)
@@ -40,6 +40,6 @@
     }
 
-    public static JSMEncoding Apply(IRandom random, JSMEncoding p1, JSMEncoding p2) {
-      var result = new JSMEncoding(random.Next());
+    public static JSM Apply(IRandom random, JSM p1, JSM p2) {
+      var result = new JSM(random.Next());
 
       int nrOfResources = p1.JobSequenceMatrix.Count;
@@ -53,6 +53,6 @@
 
       bool dominantParent = random.Next(2) == 1;
-      JSMEncoding parent1 = dominantParent ? p1 : p2;
-      JSMEncoding parent2 = dominantParent ? p2 : p1;
+      JSM parent1 = dominantParent ? p1 : p2;
+      JSM parent2 = dominantParent ? p2 : p1;
 
       //Fill childmatrix with values
@@ -75,5 +75,5 @@
     }
 
-    public override JSMEncoding Cross(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
+    public override JSM Cross(IRandom random, JSM parent1, JSM parent2) {
       return Apply(random, parent1, parent2);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMOXCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMOXCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMOXCrossover.cs	(revision 17461)
@@ -38,6 +38,6 @@
     }
 
-    public static JSMEncoding Apply(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
-      var result = new JSMEncoding(random.Next());
+    public static JSM Apply(IRandom random, JSM parent1, JSM parent2) {
+      var result = new JSM(random.Next());
 
       for (int i = 0; i < parent1.JobSequenceMatrix.Count; i++) {
@@ -50,5 +50,5 @@
     }
 
-    public override JSMEncoding Cross(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
+    public override JSM Cross(IRandom random, JSM parent1, JSM parent2) {
       return Apply(random, parent1, parent2);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMSXXCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMSXXCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMSXXCrossover.cs	(revision 17461)
@@ -39,6 +39,6 @@
     }
 
-    public static JSMEncoding Apply(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
-      var result = new JSMEncoding(random.Next());
+    public static JSM Apply(IRandom random, JSM parent1, JSM parent2) {
+      var result = new JSM(random.Next());
       int subSequenceLength = random.Next(parent1.JobSequenceMatrix[0].Length);
       for (int i = 0; i < parent1.JobSequenceMatrix.Count; i++) {
@@ -91,5 +91,5 @@
     }
 
-    public override JSMEncoding Cross(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
+    public override JSM Cross(IRandom random, JSM parent1, JSM parent2) {
       return Apply(random, parent1, parent2);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Decoder/JSMDecoder.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Decoder/JSMDecoder.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Decoder/JSMDecoder.cs	(revision 17461)
@@ -34,5 +34,5 @@
   [Item("JobSequenceMatrixDecoder", "Applies the GifflerThompson algorithm to create an active schedule from a JobSequence Matrix.")]
   [StorableType("BBE354C2-7599-43CC-ACDC-F8F0F65BE3F5")]
-  public class JSMDecoder : ScheduleDecoder<JSMEncoding> {
+  public class JSMDecoder : ScheduleDecoder<JSM>, IJSMOperator {
 
     public IFixedValueParameter<EnumValue<JSMDecodingErrorPolicy>> DecodingErrorPolicyParameter {
@@ -64,5 +64,5 @@
     }
 
-    private static Task SelectTaskFromConflictSet(JSMEncoding solution, JSMDecodingErrorPolicy decodingErrorPolicy, JSMForcingStrategy forcingStrategy, int conflictedResourceNr, int progressOnConflictedResource, ItemList<Task> conflictSet, IRandom random) {
+    private static Task SelectTaskFromConflictSet(JSM solution, JSMDecodingErrorPolicy decodingErrorPolicy, JSMForcingStrategy forcingStrategy, int conflictedResourceNr, int progressOnConflictedResource, ItemList<Task> conflictSet, IRandom random) {
       if (conflictSet.Count == 1)
         return conflictSet[0];
@@ -108,5 +108,5 @@
     }
 
-    private static void ApplyForcingStrategy(JSMForcingStrategy forcingStrategy, JSMEncoding solution, int conflictedResource, int newResolutionIndex, int progressOnResource, int newResolution) {
+    private static void ApplyForcingStrategy(JSMForcingStrategy forcingStrategy, JSM solution, int conflictedResource, int newResolutionIndex, int progressOnResource, int newResolution) {
       var jsm = solution.JobSequenceMatrix;
       if (forcingStrategy == JSMForcingStrategy.SwapForcing) {
@@ -130,9 +130,9 @@
     }
 
-    public override Schedule DecodeSchedule(JSMEncoding encoding, ItemList<Job> jobData) {
+    public override Schedule DecodeSchedule(JSM encoding, ItemList<Job> jobData) {
       return Decode(encoding, jobData, DecodingErrorPolicy, ForcingStrategy);
     }
 
-    public static Schedule Decode(JSMEncoding solution, ItemList<Job> jobData, JSMDecodingErrorPolicy decodingErrorPolicy, JSMForcingStrategy forcingStrategy) {
+    public static Schedule Decode(JSM solution, ItemList<Job> jobData, JSMDecodingErrorPolicy decodingErrorPolicy, JSMForcingStrategy forcingStrategy) {
       var random = new FastRandom(solution.RandomSeed);
       var jobs = (ItemList<Job>)jobData.Clone();
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSM.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSM.cs	(revision 17461)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSM.cs	(revision 17461)
@@ -0,0 +1,66 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Text;
+using HEAL.Attic;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.PermutationEncoding;
+
+namespace HeuristicLab.Encodings.ScheduleEncoding {
+  [Item("Job Sequence Matrix", "Represents the job sequence matrix solution.")]
+  [StorableType("8F19A51A-45F1-4C1D-BCD4-A9F57E40DDC5")]
+  public class JSM : Item, IScheduleSolution {
+
+    [Storable]
+    public ItemList<Permutation> JobSequenceMatrix { get; private set; }
+    [Storable]
+    public int RandomSeed { get; private set; }
+
+    [StorableConstructor]
+    protected JSM(StorableConstructorFlag _) : base(_) { }
+    protected JSM(JSM original, Cloner cloner)
+      : base(original, cloner) {
+      this.JobSequenceMatrix = cloner.Clone(original.JobSequenceMatrix);
+      this.RandomSeed = original.RandomSeed;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSM(this, cloner);
+    }
+    public JSM(int randomSeed)
+      : base() {
+      RandomSeed = randomSeed;
+      JobSequenceMatrix = new ItemList<Permutation>();
+    }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("[ ");
+
+      foreach (Permutation p in JobSequenceMatrix) {
+        sb.AppendLine(p.ToString());
+      }
+
+      sb.Append("]");
+      return sb.ToString();
+    }
+  }
+}
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs	(revision 17360)
+++ 	(revision )
@@ -1,66 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System.Text;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Encodings.PermutationEncoding;
-using HEAL.Attic;
-
-namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [Item("JobSequenceMatrixEncoding", "Represents an encoding for a scheduling Problem using a list of job sequences to deliver scheduleinformation.")]
-  [StorableType("8F19A51A-45F1-4C1D-BCD4-A9F57E40DDC5")]
-  public class JSMEncoding : Item, ISchedule {
-
-    [Storable]
-    public ItemList<Permutation> JobSequenceMatrix { get; private set; }
-    [Storable]
-    public int RandomSeed { get; private set; }
-
-    [StorableConstructor]
-    protected JSMEncoding(StorableConstructorFlag _) : base(_) { }
-    protected JSMEncoding(JSMEncoding original, Cloner cloner)
-      : base(original, cloner) {
-      this.JobSequenceMatrix = cloner.Clone(original.JobSequenceMatrix);
-      this.RandomSeed = original.RandomSeed;
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new JSMEncoding(this, cloner);
-    }
-    public JSMEncoding(int randomSeed)
-      : base() {
-      RandomSeed = randomSeed;
-      JobSequenceMatrix = new ItemList<Permutation>();
-    }
-
-    public override string ToString() {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("[ ");
-
-      foreach (Permutation p in JobSequenceMatrix) {
-        sb.AppendLine(p.ToString());
-      }
-
-      sb.Append("]");
-      return sb.ToString();
-    }
-  }
-}
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 17461)
@@ -30,5 +30,5 @@
   [Item("JobSequenceMatrixCreator", "Creator class used to create Job Sequence Matrix solutions for standard JobShop scheduling problems.")]
   [StorableType("F8053C69-31C2-4E05-8FA0-5AED15FAF804")]
-  public class JSMRandomCreator : ScheduleCreator<JSMEncoding>, IStochasticOperator {
+  public class JSMRandomCreator : ScheduleCreator<JSM>, IStochasticOperator {
 
     public ILookupParameter<IRandom> RandomParameter {
@@ -48,6 +48,6 @@
     }
 
-    public static JSMEncoding Apply(int jobs, int resources, IRandom random) {
-      var solution = new JSMEncoding(random.Next());
+    public static JSM Apply(int jobs, int resources, IRandom random) {
+      var solution = new JSM(random.Next());
       for (int i = 0; i < resources; i++) {
         solution.JobSequenceMatrix.Add(new Permutation(PermutationTypes.Absolute, jobs, random));
@@ -56,5 +56,5 @@
     }
 
-    protected override JSMEncoding CreateSolution() {
+    protected override JSM CreateSolution() {
       return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JobSequenceMatrixEncoding.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JobSequenceMatrixEncoding.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JobSequenceMatrixEncoding.cs	(revision 17461)
@@ -31,6 +31,7 @@
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
+  [Item("Job Sequence Matrix Encoding", "Represents an encoding of schedules in form of a job sequence per resource.")]
   [StorableType("9C090369-0214-42E6-8C3E-369751F5A9E1")]
-  public sealed class JobSequenceMatrixEncoding : ScheduleEncoding<JSMEncoding> {
+  public sealed class JobSequenceMatrixEncoding : ScheduleEncoding<JSM> {
     [StorableConstructor]
     private JobSequenceMatrixEncoding(StorableConstructorFlag _) : base(_) { }
@@ -41,5 +42,5 @@
 
     public JobSequenceMatrixEncoding()
-      : base() {
+      : base("JSM") {
       SolutionCreator = new JSMRandomCreator();
       Decoder = new JSMDecoder();
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 17461)
@@ -34,8 +34,8 @@
     public JSMManipulator() : base() { }
 
-    protected abstract void Manipulate(IRandom random, ISchedule individual);
+    protected abstract void Manipulate(IRandom random, IScheduleSolution individual);
 
     public override IOperation InstrumentedApply() {
-      var solution = ScheduleParameter.ActualValue as JSMEncoding;
+      var solution = ScheduleParameter.ActualValue as JSM;
       if (solution == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type JSMEncoding.");
       Manipulate(RandomParameter.ActualValue, solution);
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 17461)
@@ -42,5 +42,5 @@
     }
 
-    public static void Apply(IRandom random, JSMEncoding individual) {
+    public static void Apply(IRandom random, JSM individual) {
       int nrOfJobs = individual.JobSequenceMatrix[0].Length;
       int jobIndex = random.Next(nrOfJobs);
@@ -63,6 +63,6 @@
     }
 
-    protected override void Manipulate(IRandom random, ISchedule encoding) {
-      var solution = encoding as JSMEncoding;
+    protected override void Manipulate(IRandom random, IScheduleSolution encoding) {
+      var solution = encoding as JSM;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type JSMEncoding");
       Apply(random, solution);
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 17461)
@@ -40,5 +40,5 @@
     }
 
-    public static void Apply(IRandom random, JSMEncoding individual) {
+    public static void Apply(IRandom random, JSM individual) {
       int resourceIndex = random.Next(individual.JobSequenceMatrix.Count);
       Permutation p = individual.JobSequenceMatrix[resourceIndex];
@@ -50,6 +50,6 @@
     }
 
-    protected override void Manipulate(IRandom random, ISchedule individual) {
-      var solution = individual as JSMEncoding;
+    protected override void Manipulate(IRandom random, IScheduleSolution individual) {
+      var solution = individual as JSM;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type JSMEncoding");
       Apply(random, solution);
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRCrossover.cs	(revision 17461)
@@ -38,5 +38,5 @@
     }
 
-    public abstract PWREncoding Cross(IRandom random, PWREncoding parent1, PWREncoding parent2);
+    public abstract PWR Cross(IRandom random, PWR parent1, PWR parent2);
 
     public override IOperation InstrumentedApply() {
@@ -44,5 +44,5 @@
 
       ChildParameter.ActualValue =
-        Cross(RandomParameter.ActualValue, parents[0] as PWREncoding, parents[1] as PWREncoding);
+        Cross(RandomParameter.ActualValue, parents[0] as PWR, parents[1] as PWR);
 
       return base.InstrumentedApply();
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRGOXCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRGOXCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRGOXCrossover.cs	(revision 17461)
@@ -55,6 +55,6 @@
     }
 
-    public static PWREncoding Apply(IRandom random, PWREncoding parent1, PWREncoding parent2) {
-      var result = new PWREncoding();
+    public static PWR Apply(IRandom random, PWR parent1, PWR parent2) {
+      var result = new PWR();
 
       var p1 = ((IntegerVector)(parent1.PermutationWithRepetition.Clone())).ToList();
@@ -87,5 +87,5 @@
     }
 
-    public override PWREncoding Cross(IRandom random, PWREncoding parent1, PWREncoding parent2) {
+    public override PWR Cross(IRandom random, PWR parent1, PWR parent2) {
       return Apply(random, parent1, parent2);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRPPXCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRPPXCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRPPXCrossover.cs	(revision 17461)
@@ -41,6 +41,6 @@
     }
 
-    public static PWREncoding Apply(IRandom random, PWREncoding parent1, PWREncoding parent2) {
-      var result = new PWREncoding();
+    public static PWR Apply(IRandom random, PWR parent1, PWR parent2) {
+      var result = new PWR();
       var p1 = ((IntegerVector)(parent1.PermutationWithRepetition.Clone())).ToList();
       var p2 = ((IntegerVector)(parent2.PermutationWithRepetition.Clone())).ToList();
@@ -69,5 +69,5 @@
     }
 
-    public override PWREncoding Cross(IRandom random, PWREncoding parent1, PWREncoding parent2) {
+    public override PWR Cross(IRandom random, PWR parent1, PWR parent2) {
       return Apply(random, parent1, parent2);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Decoder/PWRDecoder.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Decoder/PWRDecoder.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Decoder/PWRDecoder.cs	(revision 17461)
@@ -27,5 +27,5 @@
   [Item("PWRDecoder", "An item used to convert a PWR-individual into a generalized schedule.")]
   [StorableType("60D171BE-9704-40E1-9C63-0E56D95403CD")]
-  public class PWRDecoder : ScheduleDecoder<PWREncoding> {
+  public class PWRDecoder : ScheduleDecoder<PWR>, IPWROperator {
     [StorableConstructor]
     protected PWRDecoder(StorableConstructorFlag _) : base(_) { }
@@ -37,9 +37,9 @@
     }
 
-    public override Schedule DecodeSchedule(PWREncoding solution, ItemList<Job> jobData) {
+    public override Schedule DecodeSchedule(PWR solution, ItemList<Job> jobData) {
       return Decode(solution, jobData);
     }
 
-    public static Schedule Decode(PWREncoding solution, ItemList<Job> jobData) {
+    public static Schedule Decode(PWR solution, ItemList<Job> jobData) {
       var jobs = (ItemList<Job>)jobData.Clone();
       var resultingSchedule = new Schedule(jobs[0].Tasks.Count);
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRInsertionManipulator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRInsertionManipulator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRInsertionManipulator.cs	(revision 17461)
@@ -40,5 +40,5 @@
     }
 
-    public static void Apply(IRandom random, PWREncoding individual) {
+    public static void Apply(IRandom random, PWR individual) {
       int cutIndex = random.Next(individual.PermutationWithRepetition.Length);
       int insertIndex = random.Next(individual.PermutationWithRepetition.Length);
@@ -55,5 +55,5 @@
     }
 
-    protected override void Manipulate(IRandom random, PWREncoding individual) {
+    protected override void Manipulate(IRandom random, PWR individual) {
       Apply(random, individual);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs	(revision 17461)
@@ -35,8 +35,8 @@
     public PWRManipulator() : base() { }
 
-    protected abstract void Manipulate(IRandom random, PWREncoding individual);
+    protected abstract void Manipulate(IRandom random, PWR individual);
 
     public override IOperation InstrumentedApply() {
-      var solution = ScheduleParameter.ActualValue as PWREncoding;
+      var solution = ScheduleParameter.ActualValue as PWR;
       if (solution == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type PWREncoding.");
       Manipulate(RandomParameter.ActualValue, solution);
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWR.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWR.cs	(revision 17461)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWR.cs	(revision 17461)
@@ -0,0 +1,78 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Text;
+using HEAL.Attic;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+namespace HeuristicLab.Encodings.ScheduleEncoding {
+  [Item("Permutation With Repetition", "Represents a encoding for a standard JobShop Scheduling Problem.")]
+  [StorableType("31A66AC4-897D-4986-A6FC-DC301DC06278")]
+  public class PWR : Item, IScheduleSolution {
+
+    [Storable]
+    public IntegerVector PermutationWithRepetition { get; set; }
+
+    [StorableConstructor]
+    protected PWR(StorableConstructorFlag _) : base(_) { }
+    protected PWR(PWR original, Cloner cloner)
+      : base(original, cloner) {
+      this.PermutationWithRepetition = cloner.Clone(original.PermutationWithRepetition);
+    }
+    public PWR()
+      : base() {
+      PermutationWithRepetition = new IntegerVector();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PWR(this, cloner);
+    }
+
+    public PWR(int nrOfJobs, int nrOfResources, IRandom random)
+      : base() {
+      PermutationWithRepetition = new IntegerVector(nrOfJobs * nrOfResources);
+      int[] lookUpTable = new int[nrOfJobs];
+
+      for (int i = 0; i < PermutationWithRepetition.Length; i++) {
+        int newValue = random.Next(nrOfJobs);
+        while (lookUpTable[newValue] >= nrOfResources)
+          newValue = random.Next(nrOfJobs);
+
+        PermutationWithRepetition[i] = newValue;
+
+        lookUpTable[newValue]++;
+      }
+    }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("[ ");
+      foreach (int i in PermutationWithRepetition) {
+        sb.Append(i + " ");
+      }
+      sb.Append("]");
+
+      return sb.ToString();
+    }
+  }
+}
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWREncoding.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWREncoding.cs	(revision 17360)
+++ 	(revision )
@@ -1,78 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System.Text;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Encodings.IntegerVectorEncoding;
-using HEAL.Attic;
-
-namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [Item("PermutationWithRepetitionEncoding", "Represents a encoding for a standard JobShop Scheduling Problem.")]
-  [StorableType("31A66AC4-897D-4986-A6FC-DC301DC06278")]
-  public class PWREncoding : Item, ISchedule {
-
-    [Storable]
-    public IntegerVector PermutationWithRepetition { get; set; }
-
-    [StorableConstructor]
-    protected PWREncoding(StorableConstructorFlag _) : base(_) { }
-    protected PWREncoding(PWREncoding original, Cloner cloner)
-      : base(original, cloner) {
-      this.PermutationWithRepetition = cloner.Clone(original.PermutationWithRepetition);
-    }
-    public PWREncoding()
-      : base() {
-      PermutationWithRepetition = new IntegerVector();
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new PWREncoding(this, cloner);
-    }
-
-    public PWREncoding(int nrOfJobs, int nrOfResources, IRandom random)
-      : base() {
-      PermutationWithRepetition = new IntegerVector(nrOfJobs * nrOfResources);
-      int[] lookUpTable = new int[nrOfJobs];
-
-      for (int i = 0; i < PermutationWithRepetition.Length; i++) {
-        int newValue = random.Next(nrOfJobs);
-        while (lookUpTable[newValue] >= nrOfResources)
-          newValue = random.Next(nrOfJobs);
-
-        PermutationWithRepetition[i] = newValue;
-
-        lookUpTable[newValue]++;
-      }
-    }
-
-    public override string ToString() {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("[ ");
-      foreach (int i in PermutationWithRepetition) {
-        sb.Append(i + " ");
-      }
-      sb.Append("]");
-
-      return sb.ToString();
-    }
-  }
-}
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs	(revision 17461)
@@ -29,5 +29,5 @@
   [Item("PermutationWithRepetitionRandomCreator", "Creates PWR-individuals at random.")]
   [StorableType("6E753916-C0FD-4585-B6A6-47FD66ED098F")]
-  public class PWRRandomCreator : ScheduleCreator<PWREncoding>, IStochasticOperator {
+  public class PWRRandomCreator : ScheduleCreator<PWR>, IStochasticOperator {
 
     public ILookupParameter<IRandom> RandomParameter {
@@ -47,9 +47,9 @@
     }
 
-    public static PWREncoding Apply(int jobs, int resources, IRandom random) {
-      return new PWREncoding(jobs, resources, random);
+    public static PWR Apply(int jobs, int resources, IRandom random) {
+      return new PWR(jobs, resources, random);
     }
 
-    protected override PWREncoding CreateSolution() {
+    protected override PWR CreateSolution() {
       return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PermutationWithRepetitionEncoding.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PermutationWithRepetitionEncoding.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PermutationWithRepetitionEncoding.cs	(revision 17461)
@@ -32,5 +32,5 @@
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   [StorableType("468EF506-0749-469B-B9B9-36655AA0178D")]
-  public sealed class PermutationWithRepetitionEncoding : ScheduleEncoding<PWREncoding> {
+  public sealed class PermutationWithRepetitionEncoding : ScheduleEncoding<PWR> {
     [StorableConstructor]
     private PermutationWithRepetitionEncoding(StorableConstructorFlag _) : base(_) { }
@@ -41,5 +41,5 @@
 
     public PermutationWithRepetitionEncoding()
-      : base() {
+      : base("PWR") {
       SolutionCreator = new PWRRandomCreator();
       Decoder = new PWRDecoder();
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVCrossover.cs	(revision 17461)
@@ -34,10 +34,10 @@
     public PRVCrossover() : base() { }
 
-    public abstract PRVEncoding Cross(IRandom random, PRVEncoding parent1, PRVEncoding parent2);
+    public abstract PRV Cross(IRandom random, PRV parent1, PRV parent2);
 
     public override IOperation InstrumentedApply() {
       var parents = ParentsParameter.ActualValue;
       ChildParameter.ActualValue =
-        Cross(RandomParameter.ActualValue, parents[0] as PRVEncoding, parents[1] as PRVEncoding);
+        Cross(RandomParameter.ActualValue, parents[0] as PRV, parents[1] as PRV);
       return base.InstrumentedApply();
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVDiscreteCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVDiscreteCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVDiscreteCrossover.cs	(revision 17461)
@@ -39,11 +39,11 @@
     }
 
-    public static PRVEncoding Apply(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
+    public static PRV Apply(IRandom random, PRV parent1, PRV parent2) {
       var randomSeed = random.Next();
       var integerVector = DiscreteCrossover.Apply(random, new ItemArray<IntegerVector>(new[] { parent1.PriorityRulesVector, parent2.PriorityRulesVector }));
-      return new PRVEncoding(integerVector, randomSeed);
+      return new PRV(integerVector, randomSeed);
     }
 
-    public override PRVEncoding Cross(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
+    public override PRV Cross(IRandom random, PRV parent1, PRV parent2) {
       return Apply(random, parent1, parent2);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVSinglePointCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVSinglePointCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVSinglePointCrossover.cs	(revision 17461)
@@ -39,11 +39,11 @@
     }
 
-    public static PRVEncoding Apply(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
+    public static PRV Apply(IRandom random, PRV parent1, PRV parent2) {
       var randomSeed = random.Next();
       var integerVector = SinglePointCrossover.Apply(random, parent1.PriorityRulesVector, parent2.PriorityRulesVector);
-      return new PRVEncoding(integerVector, randomSeed);
+      return new PRV(integerVector, randomSeed);
     }
 
-    public override PRVEncoding Cross(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
+    public override PRV Cross(IRandom random, PRV parent1, PRV parent2) {
       return Apply(random, parent1, parent2);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Decoder/PRVDecoder.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Decoder/PRVDecoder.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Decoder/PRVDecoder.cs	(revision 17461)
@@ -29,5 +29,5 @@
   [Item("JobSequencingMatrixDecoder", "Applies the GifflerThompson algorithm to create an active schedule from a JobSequencing Matrix.")]
   [StorableType("2D059957-AC7C-4B33-BADE-96706AEBAF29")]
-  public class PRVDecoder : ScheduleDecoder<PRVEncoding> {
+  public class PRVDecoder : ScheduleDecoder<PRV>, IPRVOperator {
     #region Priority Rules
     //smallest number of remaining tasks
@@ -187,9 +187,9 @@
     }
 
-    public override Schedule DecodeSchedule(PRVEncoding encoding, ItemList<Job> jobData) {
+    public override Schedule DecodeSchedule(PRV encoding, ItemList<Job> jobData) {
       return Decode(encoding, jobData);
     }
 
-    public static Schedule Decode(PRVEncoding solution, ItemList<Job> jobData) {
+    public static Schedule Decode(PRV solution, ItemList<Job> jobData) {
       var random = new FastRandom(solution.RandomSeed);
       var jobs = (ItemList<Job>)jobData.Clone();
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs	(revision 17461)
@@ -46,8 +46,8 @@
     }
 
-    protected abstract void Manipulate(IRandom random, PRVEncoding individual, int numberOfRules);
+    protected abstract void Manipulate(IRandom random, PRV individual, int numberOfRules);
 
     public override IOperation InstrumentedApply() {
-      var solution = ScheduleParameter.ActualValue as PRVEncoding;
+      var solution = ScheduleParameter.ActualValue as PRV;
       if (solution == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type PRVEncoding.");
       Manipulate(RandomParameter.ActualValue, solution, NumberOfRulesParameter.ActualValue.Value);
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs	(revision 17461)
@@ -40,9 +40,9 @@
     }
 
-    public static void Apply(IRandom random, PRVEncoding individual, int numberOfRules) {
+    public static void Apply(IRandom random, PRV individual, int numberOfRules) {
       UniformOnePositionManipulator.Apply(random, individual.PriorityRulesVector, new IntMatrix(new int[,] { { 0, numberOfRules } }));
     }
 
-    protected override void Manipulate(IRandom random, PRVEncoding individual, int numberOfRules) {
+    protected override void Manipulate(IRandom random, PRV individual, int numberOfRules) {
       Apply(random, individual, numberOfRules);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRV.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRV.cs	(revision 17461)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRV.cs	(revision 17461)
@@ -0,0 +1,72 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Text;
+using HEAL.Attic;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.IntegerVectorEncoding;
+
+namespace HeuristicLab.Encodings.ScheduleEncoding {
+  [Item("Priority Rules Vector", "Represents an encoding for a Scheduling Problem.")]
+  [StorableType("D42AC200-1F87-451E-A953-803EF33BE953")]
+  public class PRV : Item, IScheduleSolution {
+    [Storable]
+    public IntegerVector PriorityRulesVector { get; private set; }
+    [Storable]
+    public int RandomSeed { get; private set; }
+
+    [StorableConstructor]
+    protected PRV(StorableConstructorFlag _) : base(_) { }
+    protected PRV(PRV original, Cloner cloner)
+      : base(original, cloner) {
+      this.PriorityRulesVector = cloner.Clone(original.PriorityRulesVector);
+      this.RandomSeed = original.RandomSeed;
+    }
+
+    public PRV(IntegerVector iv, int randomSeed)
+      : base() {
+      this.RandomSeed = randomSeed;
+      this.PriorityRulesVector = (IntegerVector)iv.Clone();
+    }
+    public PRV(int length, IRandom random, int min, int max)
+      : base() {
+      this.RandomSeed = random.Next();
+      this.PriorityRulesVector = new IntegerVector(length, random, min, max);
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PRV(this, cloner);
+    }
+
+    public override string ToString() {
+      StringBuilder sb = new StringBuilder();
+      sb.Append("[ ");
+
+      foreach (int i in PriorityRulesVector) {
+        sb.Append(i + " ");
+      }
+
+      sb.Append("]");
+      return sb.ToString();
+    }
+  }
+}
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVEncoding.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVEncoding.cs	(revision 17360)
+++ 	(revision )
@@ -1,72 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System.Text;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Encodings.IntegerVectorEncoding;
-using HEAL.Attic;
-
-namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [Item("PriorityRulesVectorEncoding", "Represents an encoding for a Scheduling Problem.")]
-  [StorableType("D42AC200-1F87-451E-A953-803EF33BE953")]
-  public class PRVEncoding : Item, ISchedule {
-    [Storable]
-    public IntegerVector PriorityRulesVector { get; private set; }
-    [Storable]
-    public int RandomSeed { get; private set; }
-
-    [StorableConstructor]
-    protected PRVEncoding(StorableConstructorFlag _) : base(_) { }
-    protected PRVEncoding(PRVEncoding original, Cloner cloner)
-      : base(original, cloner) {
-      this.PriorityRulesVector = cloner.Clone(original.PriorityRulesVector);
-      this.RandomSeed = original.RandomSeed;
-    }
-
-    public PRVEncoding(IntegerVector iv, int randomSeed)
-      : base() {
-      this.RandomSeed = randomSeed;
-      this.PriorityRulesVector = (IntegerVector)iv.Clone();
-    }
-    public PRVEncoding(int length, IRandom random, int min, int max)
-      : base() {
-      this.RandomSeed = random.Next();
-      this.PriorityRulesVector = new IntegerVector(length, random, min, max);
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new PRVEncoding(this, cloner);
-    }
-
-    public override string ToString() {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("[ ");
-
-      foreach (int i in PriorityRulesVector) {
-        sb.Append(i + " ");
-      }
-
-      sb.Append("]");
-      return sb.ToString();
-    }
-  }
-}
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs	(revision 17461)
@@ -29,5 +29,5 @@
   [Item("PriorityRulesRandomCreator", "Creator class used to create PRV encoding objects for scheduling problems.")]
   [StorableType("5FF2A11E-86F9-4A8B-8E1C-713D6801506C")]
-  public class PRVRandomCreator : ScheduleCreator<PRVEncoding>, IStochasticOperator {
+  public class PRVRandomCreator : ScheduleCreator<PRV>, IStochasticOperator {
 
     [Storable]
@@ -54,9 +54,9 @@
     }
 
-    public static PRVEncoding Apply(int jobs, int resources, IRandom random, int nrOfRules) {
-      return new PRVEncoding(jobs * resources, random, 0, nrOfRules);
+    public static PRV Apply(int jobs, int resources, IRandom random, int nrOfRules) {
+      return new PRV(jobs * resources, random, 0, nrOfRules);
     }
 
-    protected override PRVEncoding CreateSolution() {
+    protected override PRV CreateSolution() {
       return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue, NrOfRules);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PriorityRulesVectorEncoding.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PriorityRulesVectorEncoding.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PriorityRulesVectorEncoding.cs	(revision 17461)
@@ -34,5 +34,5 @@
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   [StorableType("9C419EE5-F3A8-4F06-8263-7D37D3AE1C72")]
-  public sealed class PriorityRulesVectorEncoding : ScheduleEncoding<PRVEncoding> {
+  public sealed class PriorityRulesVectorEncoding : ScheduleEncoding<PRV> {
 
     private IFixedValueParameter<IntValue> numberOfRulesParameter;
@@ -60,5 +60,5 @@
 
     public PriorityRulesVectorEncoding()
-      : base() {
+      : base("PRV") {
       //TODO change to meaningful value
       numberOfRulesParameter = new FixedValueParameter<IntValue>(Name + ".NumberOfRules", new IntValue(10));
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCreator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCreator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCreator.cs	(revision 17461)
@@ -31,5 +31,5 @@
   [StorableType("3DDA1485-4518-4F1D-A475-795FFE63C98E")]
   public abstract class ScheduleCreator<TSchedule> : InstrumentedOperator, IScheduleCreator<TSchedule>
-  where TSchedule : class,ISchedule {
+  where TSchedule : class,IScheduleSolution {
 
     public ILookupParameter<TSchedule> ScheduleParameter {
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCrossover.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCrossover.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCrossover.cs	(revision 17461)
@@ -32,9 +32,9 @@
   public abstract class ScheduleCrossover : InstrumentedOperator, IScheduleCrossover, IStochasticOperator {
 
-    public ILookupParameter<ISchedule> ChildParameter {
-      get { return (ILookupParameter<ISchedule>)Parameters["Child"]; }
+    public ILookupParameter<IScheduleSolution> ChildParameter {
+      get { return (ILookupParameter<IScheduleSolution>)Parameters["Child"]; }
     }
-    public IScopeTreeLookupParameter<ISchedule> ParentsParameter {
-      get { return (IScopeTreeLookupParameter<ISchedule>)Parameters["Parents"]; }
+    public IScopeTreeLookupParameter<IScheduleSolution> ParentsParameter {
+      get { return (IScopeTreeLookupParameter<IScheduleSolution>)Parameters["Parents"]; }
     }
     public ILookupParameter<IRandom> RandomParameter {
@@ -48,7 +48,7 @@
       : base() {
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
-      Parameters.Add(new LookupParameter<ISchedule>("Child", "The child solution resulting from the crossover."));
+      Parameters.Add(new LookupParameter<IScheduleSolution>("Child", "The child solution resulting from the crossover."));
       ChildParameter.ActualName = "Schedule";
-      Parameters.Add(new ScopeTreeLookupParameter<ISchedule>("Parents", "The parent solution which should be crossed."));
+      Parameters.Add(new ScopeTreeLookupParameter<IScheduleSolution>("Parents", "The parent solution which should be crossed."));
       ParentsParameter.ActualName = "Schedule";
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleDecoder.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleDecoder.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleDecoder.cs	(revision 17461)
@@ -31,8 +31,8 @@
   [StorableType("57A68F4B-4B35-4DB4-9B5E-D5154DD46E45")]
   public abstract class ScheduleDecoder<TSchedule> : SingleSuccessorOperator, IScheduleDecoder<TSchedule>
-  where TSchedule : class, ISchedule {
+  where TSchedule : class, IScheduleSolution {
 
-    public ILookupParameter<ISchedule> ScheduleEncodingParameter {
-      get { return (ILookupParameter<ISchedule>)Parameters["EncodedSchedule"]; }
+    public ILookupParameter<IScheduleSolution> ScheduleEncodingParameter {
+      get { return (ILookupParameter<IScheduleSolution>)Parameters["EncodedSchedule"]; }
     }
     public ILookupParameter<Schedule> ScheduleParameter {
@@ -48,10 +48,10 @@
     public ScheduleDecoder()
       : base() {
-      Parameters.Add(new LookupParameter<ISchedule>("EncodedSchedule", "The new scheduling solution represented as encoding."));
+      Parameters.Add(new LookupParameter<IScheduleSolution>("EncodedSchedule", "The new scheduling solution represented as encoding."));
       Parameters.Add(new LookupParameter<Schedule>("Schedule", "The decoded scheduling solution represented as generalized schedule."));
       Parameters.Add(new LookupParameter<ItemList<Job>>("JobData", "Job data taken from the JSSP - Instance."));
     }
 
-    public Schedule DecodeSchedule(ISchedule schedule, ItemList<Job> jobData) {
+    public Schedule DecodeSchedule(IScheduleSolution schedule, ItemList<Job> jobData) {
       TSchedule solution = schedule as TSchedule;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type " + typeof(TSchedule).GetPrettyName());
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding.cs	(revision 17461)
@@ -33,9 +33,9 @@
   [StorableType("D2FB1AF9-EF13-4ED2-B3E9-D5BE4E5772EA")]
   public abstract class ScheduleEncoding<TSchedule> : Encoding<TSchedule>, IScheduleEncoding
-  where TSchedule : class, ISchedule {
+  where TSchedule : class, IScheduleSolution {
     #region Encoding Parameters
     [Storable]
-    private IFixedValueParameter<ItemList<Job>> jobDataParameter;
-    public IFixedValueParameter<ItemList<Job>> JobDataParameter {
+    private IValueParameter<ItemList<Job>> jobDataParameter;
+    public IValueParameter<ItemList<Job>> JobDataParameter {
       get { return jobDataParameter; }
       set {
@@ -126,5 +126,4 @@
     }
 
-    protected ScheduleEncoding() : this("Schedule") { }
     protected ScheduleEncoding(string name) : this(name, Enumerable.Empty<Job>()) { }
     protected ScheduleEncoding(string name, IEnumerable<Job> jobData)
@@ -133,5 +132,5 @@
       int resources = jobData.SelectMany(j => j.Tasks).Select(t => t.ResourceNr).Distinct().Count();
 
-      jobDataParameter = new FixedValueParameter<ItemList<Job>>(Name + ".JobData", new ItemList<Job>(jobData));
+      jobDataParameter = new ValueParameter<ItemList<Job>>(Name + ".JobData", new ItemList<Job>(jobData));
       jobsParameter = new FixedValueParameter<IntValue>(Name + ".Jobs", new IntValue(jobs));
       resourcesParameter = new FixedValueParameter<IntValue>(Name + ".Resources", new IntValue(resources));
@@ -144,5 +143,5 @@
     }
 
-    public Schedule Decode(ISchedule schedule, ItemList<Job> jobData) {
+    public Schedule Decode(IScheduleSolution schedule, ItemList<Job> jobData) {
       return Decoder.DecodeSchedule(schedule, jobData);
     }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Decoder/DirectScheduleDecoder.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Decoder/DirectScheduleDecoder.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Decoder/DirectScheduleDecoder.cs	(revision 17461)
@@ -27,5 +27,5 @@
   [Item("DirectScheduleDecoder", "An item used to convert a direct schedule into a generalized schedule.")]
   [StorableType("151C772B-6E6C-40D9-B171-F5626C676A5F")]
-  public class DirectScheduleDecoder : ScheduleDecoder<Schedule> {
+  public class DirectScheduleDecoder : ScheduleDecoder<Schedule>, IDirectScheduleOperator {
     [StorableConstructor]
     protected DirectScheduleDecoder(StorableConstructorFlag _) : base(_) { }
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleEncoding.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleEncoding.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleEncoding.cs	(revision 17461)
@@ -31,4 +31,5 @@
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
+  [Item("Direct Schedule Encoding", "Encodes a solution by directly assigning start and end types to the tasks.")]
   [StorableType("BB1BD851-3E77-4357-942C-EAF5BE6760B4")]
   public sealed class DirectScheduleEncoding : ScheduleEncoding<Schedule> {
@@ -41,5 +42,5 @@
 
     public DirectScheduleEncoding()
-      : base() {
+      : base("Schedule") {
       SolutionCreator = new DirectScheduleRandomCreator();
       Decoder = new DirectScheduleDecoder();
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleRandomCreator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleRandomCreator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleRandomCreator.cs	(revision 17461)
@@ -54,5 +54,5 @@
 
 
-    public static Schedule Apply(PWREncoding pwr, ItemList<Job> jobData) {
+    public static Schedule Apply(PWR pwr, ItemList<Job> jobData) {
       var resultingSchedule = new Schedule(jobData[0].Tasks.Count);
       foreach (int jobNr in pwr.PermutationWithRepetition) {
@@ -70,5 +70,5 @@
     protected override Schedule CreateSolution() {
       var jobData = (ItemList<Job>)JobDataParameter.ActualValue.Clone();
-      var pwrEncoding = new PWREncoding(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value,
+      var pwrEncoding = new PWR(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value,
         RandomParameter.ActualValue);
       return Apply(pwrEncoding, jobData);
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs	(revision 17461)
@@ -31,5 +31,5 @@
   [Item("Schedule", "Represents the general solution for scheduling problems.")]
   [StorableType("EA6D14A3-7FA6-4B4B-B7F6-40B42657D398")]
-  public class Schedule : NamedItem, ISchedule {
+  public class Schedule : NamedItem, IScheduleSolution {
 
     #region Properties
Index: branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleManipulator.cs
===================================================================
--- branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleManipulator.cs	(revision 17360)
+++ branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleManipulator.cs	(revision 17461)
@@ -32,6 +32,6 @@
   public abstract class ScheduleManipulator : InstrumentedOperator, IScheduleManipulator, IStochasticOperator {
 
-    public ILookupParameter<ISchedule> ScheduleParameter {
-      get { return (ILookupParameter<ISchedule>)Parameters["Schedule"]; }
+    public ILookupParameter<IScheduleSolution> ScheduleParameter {
+      get { return (ILookupParameter<IScheduleSolution>)Parameters["Schedule"]; }
     }
 
@@ -45,5 +45,5 @@
     public ScheduleManipulator()
       : base() {
-      Parameters.Add(new LookupParameter<ISchedule>("Schedule", "The scheduling solution to be manipulated."));
+      Parameters.Add(new LookupParameter<IScheduleSolution>("Schedule", "The scheduling solution to be manipulated."));
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
     }
