Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/HeuristicLab.Encodings.ScheduleEncoding-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/HeuristicLab.Encodings.ScheduleEncoding-3.3.csproj	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/HeuristicLab.Encodings.ScheduleEncoding-3.3.csproj	(revision 8887)
@@ -110,5 +110,4 @@
   <ItemGroup>
     <Compile Include="Interfaces\IDirectScheduleOperator.cs" />
-    <Compile Include="Interfaces\IScheduleEvaluationAlgorithm.cs" />
     <Compile Include="Interfaces\IJSMOperator.cs" />
     <Compile Include="Interfaces\IPRVOperator.cs" />
@@ -116,7 +115,5 @@
     <Compile Include="Interfaces\IScheduleCreator.cs" />
     <Compile Include="Interfaces\IScheduleCrossover.cs" />
-    <Compile Include="Interfaces\IScheduleDecoder.cs" />
     <Compile Include="Interfaces\IScheduleEncoding.cs" />
-    <Compile Include="Interfaces\IScheduleEvaluator.cs" />
     <Compile Include="Interfaces\IScheduleManipulator.cs" />
     <Compile Include="Interfaces\IScheduleOperator.cs" />
@@ -151,5 +148,4 @@
     <Compile Include="ScheduleEncoding\Job.cs" />
     <Compile Include="ScheduleEncoding\Manipulators\DirectScheduleManipulator.cs" />
-    <Compile Include="ScheduleEncoding\Manipulators\ConcreteScheduleManipulator.cs" />
     <Compile Include="ScheduleEncoding\DirectScheduleRandomCreator.cs" />
     <Compile Include="ScheduleEncoding\Resource.cs" />
@@ -158,5 +154,4 @@
     <Compile Include="ScheduleCreator.cs" />
     <Compile Include="ScheduleCrossover.cs" />
-    <Compile Include="ScheduleDecoder.cs" />
     <Compile Include="ScheduleEncoding\Task.cs" />
     <Compile Include="ScheduleManipulator.cs" />
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IDirectScheduleOperator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IDirectScheduleOperator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IDirectScheduleOperator.cs	(revision 8887)
@@ -21,4 +21,5 @@
 
 using HeuristicLab.Core;
+
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   public interface IDirectScheduleOperator : IOperator {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IJSMOperator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IJSMOperator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IJSMOperator.cs	(revision 8887)
@@ -1,3 +1,24 @@
-﻿using HeuristicLab.Core;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Core;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IPRVOperator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IPRVOperator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IPRVOperator.cs	(revision 8887)
@@ -1,3 +1,24 @@
-﻿using HeuristicLab.Core;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Core;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IPWROperator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IPWROperator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IPWROperator.cs	(revision 8887)
@@ -1,3 +1,24 @@
-﻿using HeuristicLab.Core;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Core;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCreator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCreator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCreator.cs	(revision 8887)
@@ -1,6 +1,29 @@
-﻿using HeuristicLab.Optimization;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Core;
+using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   public interface IScheduleCreator : ISolutionCreator, IScheduleOperator {
+    ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter { get; }
   }
 }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCrossover.cs	(revision 8887)
@@ -1,6 +1,30 @@
-﻿using HeuristicLab.Optimization;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Core;
+using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   public interface IScheduleCrossover : ICrossover, IScheduleOperator {
+    ILookupParameter<IScheduleEncoding> ChildParameter { get; }
+    IScopeTreeLookupParameter<IScheduleEncoding> ParentsParameter { get; }
   }
 }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleDecoder.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleDecoder.cs	(revision 8886)
+++ 	(revision )
@@ -1,27 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 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
-
-
-namespace HeuristicLab.Encodings.ScheduleEncoding {
-  public interface IScheduleDecoder : IScheduleOperator {
-
-  }
-}
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEvaluationAlgorithm.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEvaluationAlgorithm.cs	(revision 8886)
+++ 	(revision )
@@ -1,6 +1,0 @@
-﻿using HeuristicLab.Optimization;
-
-namespace HeuristicLab.Encodings.ScheduleEncoding {
-  public interface IScheduleEvaluationAlgorithm : ISingleObjectiveEvaluator {
-  }
-}
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEvaluator.cs	(revision 8886)
+++ 	(revision )
@@ -1,6 +1,0 @@
-﻿using HeuristicLab.Optimization;
-
-namespace HeuristicLab.Encodings.ScheduleEncoding {
-  public interface IScheduleEvaluator : ISingleObjectiveEvaluator, IScheduleOperator {
-  }
-}
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleManipulator.cs	(revision 8887)
@@ -20,8 +20,10 @@
 #endregion
 
+using HeuristicLab.Core;
 using HeuristicLab.Optimization;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   public interface IScheduleManipulator : IManipulator, IScheduleOperator {
+    ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter { get; }
   }
 }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleOperator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleOperator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleOperator.cs	(revision 8887)
@@ -1,3 +1,24 @@
-﻿using HeuristicLab.Core;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Core;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMCrossover.cs	(revision 8887)
@@ -27,5 +27,5 @@
   [Item("JSMCrossover", "An operator which crosses two JSM representations.")]
   [StorableClass]
-  public abstract class JSMCrossover : ScheduleCrossover<JSMEncoding>, IJSMOperator {
+  public abstract class JSMCrossover : ScheduleCrossover, IJSMOperator {
 
     [StorableConstructor]
@@ -41,5 +41,5 @@
 
     public override IOperation Apply() {
-      ItemArray<JSMEncoding> parents = ParentsParameter.ActualValue;
+      var parents = ParentsParameter.ActualValue;
 
       ChildParameter.ActualValue =
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMJOXCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMJOXCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMJOXCrossover.cs	(revision 8887)
@@ -30,17 +30,16 @@
   [StorableClass]
   public class JSMJOXCrossover : JSMCrossover {
+
     [StorableConstructor]
     protected JSMJOXCrossover(bool deserializing) : base(deserializing) { }
-    protected JSMJOXCrossover(JSMJOXCrossover original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected JSMJOXCrossover(JSMJOXCrossover original, Cloner cloner) : base(original, cloner) { }
+    public JSMJOXCrossover() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new JSMJOXCrossover(this, cloner);
     }
-    public JSMJOXCrossover() : base() { }
-
 
     public static JSMEncoding Apply(IRandom random, JSMEncoding p1, JSMEncoding p2) {
-      JSMEncoding result = new JSMEncoding();
+      var result = new JSMEncoding();
 
       int nrOfResources = p1.JobSequenceMatrix.Count;
@@ -48,5 +47,5 @@
 
       //Determine randomly which jobindexes persist
-      BoolArray persist = new BoolArray(nrOfJobs);
+      var persist = new BoolArray(nrOfJobs);
       for (int i = 0; i < persist.Length; i++) {
         persist[i] = random.Next(2) == 1;
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMOXCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMOXCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMOXCrossover.cs	(revision 8887)
@@ -28,17 +28,16 @@
   [StorableClass]
   public class JSMOXCrossover : JSMCrossover {
+
     [StorableConstructor]
     protected JSMOXCrossover(bool deserializing) : base(deserializing) { }
-    protected JSMOXCrossover(JSMOXCrossover original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected JSMOXCrossover(JSMOXCrossover original, Cloner cloner) : base(original, cloner) { }
+    public JSMOXCrossover() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new JSMOXCrossover(this, cloner);
     }
-    public JSMOXCrossover() : base() { }
-
 
     public static JSMEncoding Apply(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
-      JSMEncoding result = new JSMEncoding();
+      var result = new JSMEncoding();
 
       for (int i = 0; i < parent1.JobSequenceMatrix.Count; i++) {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMSXXCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMSXXCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Crossovers/JSMSXXCrossover.cs	(revision 8887)
@@ -29,21 +29,20 @@
   [StorableClass]
   public class JSMSXXCrossover : JSMCrossover {
+
     [StorableConstructor]
     protected JSMSXXCrossover(bool deserializing) : base(deserializing) { }
-    protected JSMSXXCrossover(JSMSXXCrossover original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected JSMSXXCrossover(JSMSXXCrossover original, Cloner cloner) : base(original, cloner) { }
+    public JSMSXXCrossover() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new JSMSXXCrossover(this, cloner);
     }
-    public JSMSXXCrossover() : base() { }
-
 
     public static JSMEncoding Apply(IRandom random, JSMEncoding parent1, JSMEncoding parent2) {
-      JSMEncoding result = new JSMEncoding();
+      var result = new JSMEncoding();
       int subSequenceLength = random.Next(parent1.JobSequenceMatrix[0].Length);
       for (int i = 0; i < parent1.JobSequenceMatrix.Count; i++) {
-        Permutation p1 = (Permutation)parent1.JobSequenceMatrix[i].Clone();
-        Permutation p2 = (Permutation)parent2.JobSequenceMatrix[i].Clone();
+        var p1 = (Permutation)parent1.JobSequenceMatrix[i].Clone();
+        var p2 = (Permutation)parent2.JobSequenceMatrix[i].Clone();
         FindAndExchangeSubsequences(p1, p2, subSequenceLength);
         result.JobSequenceMatrix.Add(p1);
@@ -51,4 +50,5 @@
       return result;
     }
+
     private static void FindAndExchangeSubsequences(Permutation p1, Permutation p2, int subSequenceLength) {
       for (int i = 0; i <= p1.Length - subSequenceLength; i++) {
@@ -63,6 +63,7 @@
       }
     }
+
     private static void ExchangeSubsequences(Permutation p1, int index1, Permutation p2, int index2, int subSequenceLength) {
-      Permutation aux = (Permutation)p1.Clone();
+      var aux = (Permutation)p1.Clone();
       for (int i = 0; i < subSequenceLength; i++) {
         p1[i + index1] = p2[i + index2];
@@ -70,4 +71,5 @@
       }
     }
+
     private static bool AreEqualSubsequences(int[] ss1, int[] ss2) {
       int counter = 0;
@@ -80,6 +82,7 @@
       return counter == ss1.Length;
     }
+
     private static int[] GetSubSequenceAtPosition(Permutation p1, int index, int subSequenceLength) {
-      int[] result = new int[subSequenceLength];
+      var result = new int[subSequenceLength];
       for (int i = 0; i < subSequenceLength; i++)
         result[i] = p1[i + index];
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs	(revision 8887)
@@ -30,4 +30,5 @@
   [StorableClass]
   public class JSMEncoding : Item, IScheduleEncoding {
+
     [Storable]
     public ItemList<Permutation> JobSequenceMatrix { get; set; }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 8887)
@@ -28,10 +28,9 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-
 namespace HeuristicLab.Encodings.ScheduleEncoding.JobSequenceMatrix {
   [Item("JobSequenceMatrixCreator", "Creator class used to create Job Sequence Matrix solutions for standard JobShop scheduling problems.")]
   [StorableClass]
-  public class JSMRandomCreator : ScheduleCreator<JSMEncoding>, IStochasticOperator {
-    #region Parameter Properties
+  public class JSMRandomCreator : ScheduleCreator, IStochasticOperator {
+
     public ILookupParameter<IRandom> RandomParameter {
       get { return (LookupParameter<IRandom>)Parameters["Random"]; }
@@ -43,15 +42,8 @@
       get { return (IValueLookupParameter<IntValue>)Parameters["Resources"]; }
     }
-    #endregion
-
 
     [StorableConstructor]
     protected JSMRandomCreator(bool deserializing) : base(deserializing) { }
-    protected JSMRandomCreator(JSMRandomCreator original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new JSMRandomCreator(this, cloner);
-    }
+    protected JSMRandomCreator(JSMRandomCreator original, Cloner cloner) : base(original, cloner) { }
     public JSMRandomCreator()
       : base() {
@@ -63,17 +55,17 @@
     }
 
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSMRandomCreator(this, cloner);
+    }
 
     public static JSMEncoding Apply(int jobs, int resources, IRandom random) {
-      JSMEncoding solution = new JSMEncoding();
-
+      var solution = new JSMEncoding();
       for (int i = 0; i < resources; i++) {
         solution.JobSequenceMatrix.Add(new Permutation(PermutationTypes.Absolute, jobs, random));
       }
-
       return solution;
     }
 
-
-    protected override JSMEncoding CreateSolution() {
+    protected override IScheduleEncoding CreateSolution() {
       return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue);
     }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 8887)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -27,5 +28,5 @@
   [Item("JSMManipulator", "An operator which manipulates a JSM representation.")]
   [StorableClass]
-  public abstract class JSMManipulator : ScheduleManipulator<JSMEncoding>, IJSMOperator {
+  public abstract class JSMManipulator : ScheduleManipulator, IJSMOperator {
     [StorableConstructor]
     protected JSMManipulator(bool deserializing) : base(deserializing) { }
@@ -36,9 +37,9 @@
     }
 
-    protected abstract void Manipulate(IRandom random, JSMEncoding individual);
-
+    protected abstract void Manipulate(IRandom random, IScheduleEncoding individual);
 
     public override IOperation Apply() {
-      JSMEncoding solution = ScheduleEncodingParameter.ActualValue;
+      var solution = ScheduleEncodingParameter.ActualValue as JSMEncoding;
+      if (solution == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type JSMEncoding.");
       Manipulate(RandomParameter.ActualValue, solution);
       return base.Apply();
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 8887)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -28,19 +29,16 @@
 
 namespace HeuristicLab.Encodings.ScheduleEncoding.JobSequenceMatrix {
-
   [Item("JSMShiftChangeManipulator", "Represents a manipulation operation where the operations of a randomly determined job are shifted in one direction for all resources.")]
   [StorableClass]
   public class JSMShiftChangeManipulator : JSMManipulator {
+
     [StorableConstructor]
     protected JSMShiftChangeManipulator(bool deserializing) : base(deserializing) { }
-    protected JSMShiftChangeManipulator(JSMShiftChangeManipulator original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected JSMShiftChangeManipulator(JSMShiftChangeManipulator original, Cloner cloner) : base(original, cloner) { }
+    public JSMShiftChangeManipulator() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new JSMShiftChangeManipulator(this, cloner);
     }
-
-    public JSMShiftChangeManipulator() : base() { }
-
 
     public static void Apply(IRandom random, JSMEncoding individual) {
@@ -65,6 +63,8 @@
     }
 
-    protected override void Manipulate(IRandom random, JSMEncoding individual) {
-      Apply(random, individual);
+    protected override void Manipulate(IRandom random, IScheduleEncoding encoding) {
+      var solution = encoding as JSMEncoding;
+      if (solution == null) throw new InvalidOperationException("Encoding is not of type JSMEncoding");
+      Apply(random, solution);
     }
   }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 8887)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -26,19 +27,16 @@
 
 namespace HeuristicLab.Encodings.ScheduleEncoding.JobSequenceMatrix {
-
   [Item("JSMSwapManipulator", "Represents a manipulation operation swapping parts of the individual.")]
   [StorableClass]
   public class JSMSwapManipulator : JSMManipulator {
+
     [StorableConstructor]
     protected JSMSwapManipulator(bool deserializing) : base(deserializing) { }
-    protected JSMSwapManipulator(JSMSwapManipulator original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected JSMSwapManipulator(JSMSwapManipulator original, Cloner cloner) : base(original, cloner) { }
+    public JSMSwapManipulator() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new JSMSwapManipulator(this, cloner);
     }
-
-    public JSMSwapManipulator() : base() { }
-
 
     public static void Apply(IRandom random, JSMEncoding individual) {
@@ -52,6 +50,8 @@
     }
 
-    protected override void Manipulate(IRandom random, JSMEncoding individual) {
-      Apply(random, individual);
+    protected override void Manipulate(IRandom random, IScheduleEncoding individual) {
+      var solution = individual as JSMEncoding;
+      if (solution == null) throw new InvalidOperationException("Encoding is not of type JSMEncoding");
+      Apply(random, solution);
     }
   }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRCrossover.cs	(revision 8887)
@@ -27,5 +27,5 @@
   [Item("PWRCrossover", "An operator which crosses two JSM representations.")]
   [StorableClass]
-  public abstract class PWRCrossover : ScheduleCrossover<PWREncoding>, IPWROperator {
+  public abstract class PWRCrossover : ScheduleCrossover, IPWROperator {
 
     [StorableConstructor]
@@ -41,5 +41,5 @@
 
     public override IOperation Apply() {
-      ItemArray<PWREncoding> parents = ParentsParameter.ActualValue;
+      var parents = ParentsParameter.ActualValue;
 
       ChildParameter.ActualValue =
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRGOXCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRGOXCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRGOXCrossover.cs	(revision 8887)
@@ -31,17 +31,17 @@
   [StorableClass]
   public class PWRGOXCrossover : PWRCrossover {
+
     [StorableConstructor]
     protected PWRGOXCrossover(bool deserializing) : base(deserializing) { }
-    protected PWRGOXCrossover(PWRGOXCrossover original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected PWRGOXCrossover(PWRGOXCrossover original, Cloner cloner) : base(original, cloner) { }
+    public PWRGOXCrossover() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new PWRGOXCrossover(this, cloner);
     }
-    public PWRGOXCrossover() : base() { }
 
     private static int[] GetLookUpForIndividual(List<int> p) {
-      int[] result = new int[p.Count];
-      Dictionary<int, int> lookUpTable = new Dictionary<int, int>();
+      var result = new int[p.Count];
+      var lookUpTable = new Dictionary<int, int>();
 
       for (int i = 0; i < p.Count; i++) {
@@ -54,10 +54,11 @@
       return result;
     }
+
     public static PWREncoding Apply(IRandom random, PWREncoding parent1, PWREncoding parent2) {
-      PWREncoding result = new PWREncoding();
+      var result = new PWREncoding();
 
-      List<int> p1 = ((IntegerVector)(parent1.PermutationWithRepetition.Clone())).ToList<int>();
-      List<int> p2 = ((IntegerVector)(parent2.PermutationWithRepetition.Clone())).ToList<int>();
-      List<int> child = new List<int>();
+      var p1 = ((IntegerVector)(parent1.PermutationWithRepetition.Clone())).ToList();
+      var p2 = ((IntegerVector)(parent2.PermutationWithRepetition.Clone())).ToList();
+      var child = new List<int>();
 
       int[] lookUpArrayP1 = GetLookUpForIndividual(p1);
@@ -90,7 +91,4 @@
     }
 
-
-
-
   }
 }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRPPXCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRPPXCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Crossovers/PWRPPXCrossover.cs	(revision 8887)
@@ -31,21 +31,21 @@
   [StorableClass]
   public class PWRPPXCrossover : PWRCrossover {
+
     [StorableConstructor]
     protected PWRPPXCrossover(bool deserializing) : base(deserializing) { }
-    protected PWRPPXCrossover(PWRPPXCrossover original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected PWRPPXCrossover(PWRPPXCrossover original, Cloner cloner) : base(original, cloner) { }
+    public PWRPPXCrossover() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new PWRPPXCrossover(this, cloner);
     }
-    public PWRPPXCrossover() : base() { }
 
     public static PWREncoding Apply(IRandom random, PWREncoding parent1, PWREncoding parent2) {
-      PWREncoding result = new PWREncoding();
-      List<int> p1 = ((IntegerVector)(parent1.PermutationWithRepetition.Clone())).ToList<int>();
-      List<int> p2 = ((IntegerVector)(parent2.PermutationWithRepetition.Clone())).ToList<int>();
-      List<int> child = new List<int>();
+      var result = new PWREncoding();
+      var p1 = ((IntegerVector)(parent1.PermutationWithRepetition.Clone())).ToList();
+      var p2 = ((IntegerVector)(parent2.PermutationWithRepetition.Clone())).ToList();
+      var child = new List<int>();
 
-      bool[] lookUpTable = new bool[parent1.PermutationWithRepetition.Length];
+      var lookUpTable = new bool[parent1.PermutationWithRepetition.Length];
       for (int i = 0; i < lookUpTable.Length; i++) {
         lookUpTable[i] = random.Next(2) == 1;
@@ -73,5 +73,4 @@
     }
 
-
   }
 }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRInsertionManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRInsertionManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRInsertionManipulator.cs	(revision 8887)
@@ -28,5 +28,4 @@
 
 namespace HeuristicLab.Encodings.ScheduleEncoding.PermutationWithRepetition {
-
   [Item("PWRInsertionManipulator", "Represents a manipulation operation inserting parts of the individual at another position.")]
   [StorableClass]
@@ -34,11 +33,10 @@
     [StorableConstructor]
     protected PWRInsertionManipulator(bool deserializing) : base(deserializing) { }
-    protected PWRInsertionManipulator(PWRInsertionManipulator original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected PWRInsertionManipulator(PWRInsertionManipulator original, Cloner cloner) : base(original, cloner) { }
+    public PWRInsertionManipulator() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new PWRInsertionManipulator(this, cloner);
     }
-    public PWRInsertionManipulator() : base() { }
 
     public static void Apply(IRandom random, PWREncoding individual) {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs	(revision 8887)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -27,5 +28,6 @@
   [Item("PWRManipulator", "An operator which manipulates a PWR representation.")]
   [StorableClass]
-  public abstract class PWRManipulator : ScheduleManipulator<PWREncoding>, IPWROperator {
+  public abstract class PWRManipulator : ScheduleManipulator, IPWROperator {
+
     [StorableConstructor]
     protected PWRManipulator(bool deserializing) : base(deserializing) { }
@@ -38,7 +40,7 @@
     protected abstract void Manipulate(IRandom random, PWREncoding individual);
 
-
     public override IOperation Apply() {
-      PWREncoding solution = ScheduleEncodingParameter.ActualValue;
+      var solution = ScheduleEncodingParameter.ActualValue as PWREncoding;
+      if (solution == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type PWREncoding.");
       Manipulate(RandomParameter.ActualValue, solution);
       return base.Apply();
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWREncoding.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWREncoding.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWREncoding.cs	(revision 8887)
@@ -30,7 +30,7 @@
   [StorableClass]
   public class PWREncoding : Item, IScheduleEncoding {
+
     [Storable]
     public IntegerVector PermutationWithRepetition { get; set; }
-
 
     [StorableConstructor]
@@ -40,10 +40,11 @@
       this.PermutationWithRepetition = cloner.Clone(original.PermutationWithRepetition);
     }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new PWREncoding(this, cloner);
-    }
     public PWREncoding()
       : base() {
       PermutationWithRepetition = new IntegerVector();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PWREncoding(this, cloner);
     }
 
@@ -81,4 +82,5 @@
         return base.Equals(obj);
     }
+
     public override int GetHashCode() {
       if (PermutationWithRepetition.Length == 1)
@@ -88,4 +90,5 @@
       return 0;
     }
+
     private bool AreEqual(PWREncoding pWREncoding1, PWREncoding pWREncoding2) {
       if (pWREncoding1.PermutationWithRepetition.Length != pWREncoding2.PermutationWithRepetition.Length)
@@ -97,6 +100,4 @@
       return true;
     }
-
-
   }
 }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs	(revision 8887)
@@ -30,8 +30,5 @@
   [Item("PermutationWithRepetitionRandomCreator", "Creates PWR-individuals at random.")]
   [StorableClass]
-  public class PWRRandomCreator : ScheduleCreator<PWREncoding>, IStochasticOperator {
-    public IRandom Random {
-      get { return RandomParameter.ActualValue; }
-    }
+  public class PWRRandomCreator : ScheduleCreator, IStochasticOperator {
 
     public ILookupParameter<IRandom> RandomParameter {
@@ -47,11 +44,5 @@
     [StorableConstructor]
     protected PWRRandomCreator(bool deserializing) : base(deserializing) { }
-    protected PWRRandomCreator(PWRRandomCreator original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new PWRRandomCreator(this, cloner);
-    }
-
+    protected PWRRandomCreator(PWRRandomCreator original, Cloner cloner) : base(original, cloner) { }
     public PWRRandomCreator()
       : base() {
@@ -63,11 +54,14 @@
     }
 
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PWRRandomCreator(this, cloner);
+    }
+
     public static PWREncoding Apply(int jobs, int resources, IRandom random) {
       return new PWREncoding(jobs, resources, random);
     }
 
-
-    protected override PWREncoding CreateSolution() {
-      return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, Random);
+    protected override IScheduleEncoding CreateSolution() {
+      return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue);
     }
   }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Plugin.cs.frame
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Plugin.cs.frame	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Plugin.cs.frame	(revision 8887)
@@ -23,5 +23,5 @@
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [Plugin("HeuristicLab.Encodings.ScheduleEncoding", "3.3.3.$WCREV$")]
+  [Plugin("HeuristicLab.Encodings.ScheduleEncoding", "3.3.7.$WCREV$")]
   [PluginFile("HeuristicLab.Encodings.ScheduleEncoding-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVCrossover.cs	(revision 8887)
@@ -27,5 +27,6 @@
   [Item("PRVCrossover", "An operator which crosses two PRV representations.")]
   [StorableClass]
-  public abstract class PRVCrossover : ScheduleCrossover<PRVEncoding>, IPRVOperator {
+  public abstract class PRVCrossover : ScheduleCrossover, IPRVOperator {
+
     [StorableConstructor]
     protected PRVCrossover(bool deserializing) : base(deserializing) { }
@@ -37,9 +38,8 @@
     }
 
-
     public abstract PRVEncoding Cross(IRandom random, PRVEncoding parent1, PRVEncoding parent2);
 
     public override IOperation Apply() {
-      ItemArray<PRVEncoding> parents = ParentsParameter.ActualValue;
+      var parents = ParentsParameter.ActualValue;
       ChildParameter.ActualValue =
         Cross(RandomParameter.ActualValue, parents[0] as PRVEncoding, parents[1] as PRVEncoding);
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVDiscreteCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVDiscreteCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVDiscreteCrossover.cs	(revision 8887)
@@ -29,18 +29,18 @@
   [StorableClass]
   public class PRVDiscreteCrossover : PRVCrossover {
+
     [StorableConstructor]
     protected PRVDiscreteCrossover(bool deserializing) : base(deserializing) { }
-    protected PRVDiscreteCrossover(PRVDiscreteCrossover original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected PRVDiscreteCrossover(PRVDiscreteCrossover original, Cloner cloner) : base(original, cloner) { }
+    public PRVDiscreteCrossover() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new PRVDiscreteCrossover(this, cloner);
     }
-    public PRVDiscreteCrossover() : base() { }
-
 
     public static PRVEncoding Apply(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
       return new PRVEncoding(DiscreteCrossover.Apply(random, new ItemArray<IntegerVector>(new IntegerVector[] { parent1.PriorityRulesVector, parent2.PriorityRulesVector })), parent1.NrOfRules);
     }
+
     public override PRVEncoding Cross(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
       return Apply(random, parent1, parent2);
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVSinglePointCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVSinglePointCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Crossovers/PRVSinglePointCrossover.cs	(revision 8887)
@@ -29,13 +29,13 @@
   [StorableClass]
   public class PRVSinglePointCrossover : PRVCrossover {
+
     [StorableConstructor]
     protected PRVSinglePointCrossover(bool deserializing) : base(deserializing) { }
-    protected PRVSinglePointCrossover(PRVSinglePointCrossover original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected PRVSinglePointCrossover(PRVSinglePointCrossover original, Cloner cloner) : base(original, cloner) { }
+    public PRVSinglePointCrossover() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new PRVSinglePointCrossover(this, cloner);
     }
-    public PRVSinglePointCrossover() : base() { }
 
     public static PRVEncoding Apply(IRandom random, PRVEncoding parent1, PRVEncoding parent2) {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs	(revision 8887)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -27,5 +28,5 @@
   [Item("PRVManipulator", "An operator which manipulates a PRV representation.")]
   [StorableClass]
-  public abstract class PRVManipulator : ScheduleManipulator<PRVEncoding>, IPRVOperator {
+  public abstract class PRVManipulator : ScheduleManipulator, IPRVOperator {
     [StorableConstructor]
     protected PRVManipulator(bool deserializing) : base(deserializing) { }
@@ -36,8 +37,9 @@
     }
 
+    protected abstract void Manipulate(IRandom random, PRVEncoding individual);
 
-    protected abstract void Manipulate(IRandom random, PRVEncoding individual);
     public override IOperation Apply() {
-      PRVEncoding solution = ScheduleEncodingParameter.ActualValue;
+      var solution = ScheduleEncodingParameter.ActualValue as PRVEncoding;
+      if (solution == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type PRVEncoding.");
       Manipulate(RandomParameter.ActualValue, solution);
       return base.Apply();
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVUniformOnePositionManipulator.cs	(revision 8887)
@@ -27,18 +27,16 @@
 
 namespace HeuristicLab.Encodings.ScheduleEncoding.PriorityRulesVector {
-
   [Item("PRVUniformOnePositionManipulator", "Represents a manipulation operation inserting parts of the individual at another position.")]
   [StorableClass]
   public class PRVUniformOnePositionManipulator : PRVManipulator {
+
     [StorableConstructor]
     protected PRVUniformOnePositionManipulator(bool deserializing) : base(deserializing) { }
-    protected PRVUniformOnePositionManipulator(PRVUniformOnePositionManipulator original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected PRVUniformOnePositionManipulator(PRVUniformOnePositionManipulator original, Cloner cloner) : base(original, cloner) { }
+    public PRVUniformOnePositionManipulator() : base() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new PRVUniformOnePositionManipulator(this, cloner);
     }
-    public PRVUniformOnePositionManipulator() : base() { }
-
 
     public static void Apply(IRandom random, PRVEncoding individual) {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVEncoding.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVEncoding.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVEncoding.cs	(revision 8887)
@@ -42,5 +42,4 @@
     }
 
-
     [StorableConstructor]
     protected PRVEncoding(bool deserializing) : base(deserializing) { }
@@ -49,7 +48,4 @@
       this.nrOfRules = cloner.Clone(original.NrOfRules);
       this.PriorityRulesVector = cloner.Clone(original.PriorityRulesVector);
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new PRVEncoding(this, cloner);
     }
     public PRVEncoding(int nrOfRules)
@@ -69,4 +65,7 @@
     }
 
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PRVEncoding(this, cloner);
+    }
 
     public override string ToString() {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs	(revision 8887)
@@ -27,9 +27,9 @@
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-
 namespace HeuristicLab.Encodings.ScheduleEncoding.PriorityRulesVector {
   [Item("PriorityRulesRandomCreator", "Creator class used to create PRV encoding objects for scheduling problems.")]
   [StorableClass]
-  public class PRVRandomCreator : ScheduleCreator<PRVEncoding>, IStochasticOperator {
+  public class PRVRandomCreator : ScheduleCreator, IStochasticOperator {
+
     [Storable]
     public IntValue NrOfRules { get; set; }
@@ -45,5 +45,4 @@
     }
 
-
     [StorableConstructor]
     protected PRVRandomCreator(bool deserializing) : base(deserializing) { }
@@ -51,7 +50,4 @@
       : base(original, cloner) {
       this.NrOfRules = cloner.Clone(original.NrOfRules);
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new PRVRandomCreator(this, cloner);
     }
     public PRVRandomCreator()
@@ -64,9 +60,13 @@
     }
 
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PRVRandomCreator(this, cloner);
+    }
+
     public static PRVEncoding Apply(int jobs, int resources, IRandom random, IntValue nrOfRules) {
       return new PRVEncoding(jobs * resources, random, 0, nrOfRules.Value, nrOfRules);
     }
 
-    protected override PRVEncoding CreateSolution() {
+    protected override IScheduleEncoding CreateSolution() {
       return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue, NrOfRules);
     }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Properties/AssemblyInfo.cs.frame	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/Properties/AssemblyInfo.cs.frame	(revision 8887)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -55,3 +55,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.3.$WCREV$")]
+[assembly: AssemblyFileVersion("3.3.7.$WCREV$")]
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCreator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCreator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCreator.cs	(revision 8887)
@@ -29,20 +29,17 @@
   [Item("ScheduleCreator", "Represents the generalized form of creators for Scheduling Problems.")]
   [StorableClass]
-  public abstract class ScheduleCreator<T> : SingleSuccessorOperator, IScheduleCreator where T : Item {
-    public ILookupParameter<T> ScheduleEncodingParameter {
-      get { return (ILookupParameter<T>)Parameters["ScheduleEncoding"]; }
+  public abstract class ScheduleCreator : SingleSuccessorOperator, IScheduleCreator {
+
+    public ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter {
+      get { return (ILookupParameter<IScheduleEncoding>)Parameters["ScheduleEncoding"]; }
     }
-
 
     [StorableConstructor]
     protected ScheduleCreator(bool deserializing) : base(deserializing) { }
-    protected ScheduleCreator(ScheduleCreator<T> original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected ScheduleCreator(ScheduleCreator original, Cloner cloner) : base(original, cloner) { }
     public ScheduleCreator()
       : base() {
-      Parameters.Add(new LookupParameter<T>("ScheduleEncoding", "The new scheduling solutioncandidate."));
+      Parameters.Add(new LookupParameter<IScheduleEncoding>("ScheduleEncoding", "The new scheduling solutioncandidate."));
     }
-
 
     public override IOperation Apply() {
@@ -50,5 +47,6 @@
       return base.Apply();
     }
-    protected abstract T CreateSolution();
+
+    protected abstract IScheduleEncoding CreateSolution();
   }
 }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCrossover.cs	(revision 8887)
@@ -30,15 +30,12 @@
   [Item("ScheduleCrossover", "A scheduling crossover operation.")]
   [StorableClass]
-  public abstract class ScheduleCrossover<T> : SingleSuccessorOperator, IScheduleCrossover, IStochasticOperator where T : Item {
-    #region IScheduleCrossover Members
-    public ILookupParameter<ItemArray<T>> ParentsParameter {
-      get { return (ScopeTreeLookupParameter<T>)Parameters["Parents"]; }
+  public abstract class ScheduleCrossover : SingleSuccessorOperator, IScheduleCrossover, IStochasticOperator {
+
+    public ILookupParameter<IScheduleEncoding> ChildParameter {
+      get { return (ILookupParameter<IScheduleEncoding>)Parameters["Child"]; }
     }
-
-    public ILookupParameter<T> ChildParameter {
-      get { return (ILookupParameter<T>)Parameters["Child"]; }
+    public IScopeTreeLookupParameter<IScheduleEncoding> ParentsParameter {
+      get { return (IScopeTreeLookupParameter<IScheduleEncoding>)Parameters["Parents"]; }
     }
-    #endregion
-
     public ILookupParameter<IRandom> RandomParameter {
       get { return (LookupParameter<IRandom>)Parameters["Random"]; }
@@ -47,14 +44,12 @@
     [StorableConstructor]
     protected ScheduleCrossover(bool deserializing) : base(deserializing) { }
-    protected ScheduleCrossover(ScheduleCrossover<T> original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected ScheduleCrossover(ScheduleCrossover original, Cloner cloner) : base(original, cloner) { }
     public ScheduleCrossover()
       : base() {
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
-      Parameters.Add(new ScopeTreeLookupParameter<T>("Parents", "The parent solution which should be crossed."));
+      Parameters.Add(new LookupParameter<IScheduleEncoding>("Child", "The child solution resulting from the crossover."));
+      ChildParameter.ActualName = "SchedulingSolution";
+      Parameters.Add(new ScopeTreeLookupParameter<IScheduleEncoding>("Parents", "The parent solution which should be crossed."));
       ParentsParameter.ActualName = "SchedulingSolution";
-      Parameters.Add(new LookupParameter<T>("Child", "The child solution resulting from the crossover."));
-      ChildParameter.ActualName = "SchedulingSolution";
     }
   }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleDecoder.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleDecoder.cs	(revision 8886)
+++ 	(revision )
@@ -1,59 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 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.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Operators;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [Item("ScheduleDecoder", "A scheduling decoder operator.")]
-  [StorableClass]
-  public abstract class ScheduleDecoder<T> : SingleSuccessorOperator, IScheduleDecoder where T : Item {
-    [StorableConstructor]
-    protected ScheduleDecoder(bool deserializing) : base(deserializing) { }
-    protected ScheduleDecoder(ScheduleDecoder<T> original, Cloner cloner)
-      : base(original, cloner) {
-    }
-
-    public ILookupParameter<T> ScheduleEncodingParameter {
-      get { return (ILookupParameter<T>)Parameters["ScheduleEncoding"]; }
-    }
-    public ILookupParameter<Schedule> ScheduleParameter {
-      get { return (ILookupParameter<Schedule>)Parameters["Schedule"]; }
-    }
-
-    public ScheduleDecoder()
-      : base() {
-      Parameters.Add(new LookupParameter<T>("ScheduleEncoding", "The new scheduling solution represented as encoding."));
-      Parameters.Add(new LookupParameter<Schedule>("Schedule", "The decoded scheduling solution represented as generalized schedule."));
-    }
-
-    public abstract Schedule CreateScheduleFromEncoding(T solution);
-
-    public override IOperation Apply() {
-      Schedule result = CreateScheduleFromEncoding(ScheduleEncodingParameter.ActualValue);
-      ScheduleParameter.ActualValue = result;
-      return base.Apply();
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Crossovers/DirectScheduleCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Crossovers/DirectScheduleCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Crossovers/DirectScheduleCrossover.cs	(revision 8887)
@@ -28,5 +28,5 @@
   [Item("DirectScheduleCrossover", "An operator which crosses two schedule representations.")]
   [StorableClass]
-  public abstract class DirectScheduleCrossover : ScheduleCrossover<Schedule>, IDirectScheduleOperator {
+  public abstract class DirectScheduleCrossover : ScheduleCrossover, IDirectScheduleOperator {
     [StorableConstructor]
     protected DirectScheduleCrossover(bool deserializing) : base(deserializing) { }
@@ -39,5 +39,4 @@
     }
 
-
     public ILookupParameter<ItemList<Job>> JobDataParameter {
       get { return (LookupParameter<ItemList<Job>>)Parameters["JobData"]; }
@@ -47,5 +46,5 @@
 
     public override IOperation Apply() {
-      ItemArray<Schedule> parents = ParentsParameter.ActualValue;
+      var parents = ParentsParameter.ActualValue;
       ChildParameter.ActualValue =
         Cross(RandomParameter.ActualValue, parents[0] as Schedule, parents[1] as Schedule);
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Crossovers/DirectScheduleGTCrossover.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Crossovers/DirectScheduleGTCrossover.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Crossovers/DirectScheduleGTCrossover.cs	(revision 8887)
@@ -30,26 +30,23 @@
   [StorableClass]
   public class DirectScheduleGTCrossover : DirectScheduleCrossover {
+
+    public IValueLookupParameter<DoubleValue> MutationProbabilityParameter {
+      get { return (IValueLookupParameter<DoubleValue>)Parameters["MutationProbability"]; }
+    }
+
     [StorableConstructor]
     protected DirectScheduleGTCrossover(bool deserializing) : base(deserializing) { }
-    protected DirectScheduleGTCrossover(DirectScheduleGTCrossover original, Cloner cloner)
-      : base(original, cloner) {
+    protected DirectScheduleGTCrossover(DirectScheduleGTCrossover original, Cloner cloner) : base(original, cloner) { }
+    public DirectScheduleGTCrossover()
+      : base() {
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("MutationProbability", "The probability that a task from the conflict set is chosen randomly instead of from one of the parents."));
     }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new DirectScheduleGTCrossover(this, cloner);
     }
-    public DirectScheduleGTCrossover()
-      : base() {
-      Parameters.Add(new LookupParameter<PercentValue>("MutationProbability", "The probability that the mutation operator is applied on a solution."));
-    }
-
-
-    private LookupParameter<PercentValue> MutationProbabilityParameter {
-      get { return (LookupParameter<PercentValue>)Parameters["MutationProbability"]; }
-    }
-
 
     public static Schedule Apply(IRandom random, Schedule parent1, Schedule parent2, ItemList<Job> jobData, double mutProp) {
-      Schedule child = new Schedule(parent1.Resources.Count);
-
+      var child = new Schedule(parent1.Resources.Count);
 
       //Reset scheduled tasks in result
@@ -75,5 +72,5 @@
         int progressOnResource = conflictedResource.Tasks.Count;
         Task selectedTask = null;
-        if (random.Next(100) < mutProp) {
+        if (random.NextDouble() < mutProp) {
           //Mutation
           selectedTask = conflictSet[random.Next(conflictSet.Count)];
@@ -95,5 +92,4 @@
     }
 
-
     private static Task SelectTaskFromConflictSet(ItemList<Task> conflictSet, Schedule usedParent, int conflictedResourceNr, int progressOnResource) {
       //Apply Crossover
@@ -109,6 +105,6 @@
 
     public override Schedule Cross(IRandom random, Schedule parent1, Schedule parent2) {
-      ItemList<Job> jobData = (ItemList<Job>)JobDataParameter.ActualValue.Clone();
-      PercentValue mutProp = MutationProbabilityParameter.ActualValue;
+      var jobData = (ItemList<Job>)JobDataParameter.ActualValue.Clone();
+      var mutProp = MutationProbabilityParameter.ActualValue;
       return Apply(random, parent1, parent2, jobData, mutProp.Value);
     }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleRandomCreator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleRandomCreator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleRandomCreator.cs	(revision 8887)
@@ -33,5 +33,5 @@
   [Item("DirectScheduleRandomCreator", "Creator class used to create schedule encoding objects.")]
   [StorableClass]
-  public class DirectScheduleRandomCreator : ScheduleCreator<Schedule>, IStochasticOperator {
+  public class DirectScheduleRandomCreator : ScheduleCreator, IStochasticOperator {
 
     public ILookupParameter<IRandom> RandomParameter {
@@ -68,5 +68,5 @@
 
     public static Schedule Apply(int jobs, int resources, PWREncoding pwr, ItemList<Job> jobData) {
-      Schedule resultingSchedule = new Schedule(jobData[0].Tasks.Count);
+      var resultingSchedule = new Schedule(jobData[0].Tasks.Count);
       foreach (int jobNr in pwr.PermutationWithRepetition) {
         int i = 0;
@@ -82,13 +82,12 @@
 
 
-    protected override Schedule CreateSolution() {
+    protected override IScheduleEncoding CreateSolution() {
       try {
-        ItemList<Job> jobData = (ItemList<Job>)JobDataParameter.ActualValue.Clone();
+        var jobData = (ItemList<Job>)JobDataParameter.ActualValue.Clone();
         return Apply(JobsParameter.ActualValue.Value,
           ResourcesParameter.ActualValue.Value,
           new PWREncoding(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue),
           jobData);
-      }
-      catch {
+      } catch {
         throw new Exception("ScheduleRandomCreator needs JobData parameter from a JSSP-Instance to create Schedule-Instances!");
       }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs	(revision 8887)
@@ -30,5 +30,7 @@
   [StorableClass]
   public class Job : Item, INotifyPropertyChanged {
-    [Storable(Name = "DueDate")] private double dueDate;
+
+    [Storable(Name = "DueDate")]
+    private double dueDate;
     public double DueDate {
       get { return dueDate; }
@@ -52,5 +54,5 @@
 
     [Storable(Name = "Tasks")]
-    private ItemList<Task> tasks; 
+    private ItemList<Task> tasks;
     public ItemList<Task> Tasks {
       get { return tasks; }
@@ -70,7 +72,5 @@
       this.Tasks = cloner.Clone(original.Tasks);
     }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Job(this, cloner);
-    }
+    public Job() : this(-1, double.MaxValue) { }
     public Job(int index, double dueDate)
       : base() {
@@ -78,4 +78,8 @@
       Index = index;
       Tasks = new ItemList<Task>();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Job(this, cloner);
     }
 
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Manipulators/ConcreteScheduleManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Manipulators/ConcreteScheduleManipulator.cs	(revision 8886)
+++ 	(revision )
@@ -1,50 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2012 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.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Encodings.ScheduleEncoding.ScheduleEncoding {
-
-  [Item("ConcreteScheduleManipulator", "Represents an operator somehow mutating a schedule instance.")]
-  [StorableClass]
-  public class ConcreteScheduleManipulator : DirectScheduleManipulator {
-    [StorableConstructor]
-    protected ConcreteScheduleManipulator(bool deserializing) : base(deserializing) { }
-    protected ConcreteScheduleManipulator(ConcreteScheduleManipulator original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new ConcreteScheduleManipulator(this, cloner);
-    }
-    public ConcreteScheduleManipulator() : base() { }
-
-
-    public static void Apply(IRandom random, Schedule individual) {
-      //somehow manipulate individual
-    }
-
-    protected override void Manipulate(IRandom random, Schedule individual) {
-      Apply(random, individual);
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Manipulators/DirectScheduleManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Manipulators/DirectScheduleManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Manipulators/DirectScheduleManipulator.cs	(revision 8887)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -27,5 +28,6 @@
   [Item("DirectScheduleManipulator", "An operator which manipulates a direct schedule representation.")]
   [StorableClass]
-  public abstract class DirectScheduleManipulator : ScheduleManipulator<Schedule>, IDirectScheduleOperator {
+  public abstract class DirectScheduleManipulator : ScheduleManipulator, IDirectScheduleOperator {
+
     [StorableConstructor]
     protected DirectScheduleManipulator(bool deserializing) : base(deserializing) { }
@@ -36,9 +38,10 @@
     }
 
+    protected abstract void Manipulate(IRandom random, Schedule individual);
 
-    protected abstract void Manipulate(IRandom random, Schedule individual);
     public override IOperation Apply() {
-      Schedule solution = ScheduleEncodingParameter.ActualValue;
-      Manipulate(RandomParameter.ActualValue, solution);
+      var schedule = ScheduleEncodingParameter.ActualValue as Schedule;
+      if (schedule == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type Schedule.");
+      Manipulate(RandomParameter.ActualValue, schedule);
       return base.Apply();
     }
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Resource.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Resource.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Resource.cs	(revision 8887)
@@ -29,9 +29,5 @@
   [StorableClass]
   public class Resource : Item {
-    public Resource(int index)
-      : base() {
-      Index = index;
-      Tasks = new ItemList<ScheduledTask>();
-    }
+
     [Storable]
     public int Index {
@@ -44,4 +40,22 @@
       set;
     }
+
+    [StorableConstructor]
+    protected Resource(bool deserializing) : base(deserializing) { }
+    protected Resource(Resource original, Cloner cloner)
+      : base(original, cloner) {
+      this.Index = original.Index;
+      this.Tasks = cloner.Clone(original.Tasks);
+    }
+    public Resource(int index)
+      : base() {
+      Index = index;
+      Tasks = new ItemList<ScheduledTask>();
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Resource(this, cloner);
+    }
+
     public double TotalDuration {
       get {
@@ -53,15 +67,4 @@
         return result;
       }
-    }
-
-    [StorableConstructor]
-    protected Resource(bool deserializing) : base(deserializing) { }
-    protected Resource(Resource original, Cloner cloner)
-      : base(original, cloner) {
-      this.Index = original.Index;
-      this.Tasks = cloner.Clone(original.Tasks);
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Resource(this, cloner);
     }
 
@@ -83,4 +86,5 @@
         return false;
     }
+
     public override int GetHashCode() {
       if (Tasks.Count == 1)
@@ -90,4 +94,5 @@
       return 0;
     }
+
     private static bool AreEqual(Resource res1, Resource res2) {
       if (res1.Tasks.Count != res2.Tasks.Count)
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs	(revision 8887)
@@ -32,4 +32,5 @@
   [StorableClass]
   public class Schedule : NamedItem, IScheduleEncoding {
+
     #region Properties
     [Storable]
@@ -69,7 +70,4 @@
       this.lastScheduledTaskOfJob = new Dictionary<int, ScheduledTask>(original.lastScheduledTaskOfJob);
     }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Schedule(this, cloner);
-    }
     public Schedule(int nrOfResources) {
       Resources = new ItemList<Resource>();
@@ -80,5 +78,7 @@
     }
 
-
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Schedule(this, cloner);
+    }
 
     #region Events
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/ScheduledTask.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/ScheduledTask.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/ScheduledTask.cs	(revision 8887)
@@ -29,4 +29,5 @@
   [StorableClass]
   public class ScheduledTask : Item {
+
     #region Properties
     [Storable]
@@ -57,8 +58,4 @@
       this.JobNr = original.JobNr;
     }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new ScheduledTask(this, cloner);
-    }
-
     public ScheduledTask(int resNr, double startTime, double duration, int jobNr)
       : base() {
@@ -69,4 +66,8 @@
     }
 
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ScheduledTask(this, cloner);
+    }
+
     public override string ToString() {
       StringBuilder sb = new StringBuilder();
@@ -74,5 +75,4 @@
       return sb.ToString();
     }
-
 
     public override bool Equals(object obj) {
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Task.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Task.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Task.cs	(revision 8887)
@@ -30,4 +30,5 @@
   [StorableClass]
   public class Task : Item, INotifyPropertyChanged {
+
     [Storable(Name = "TaskNr")]
     private int taskNr;
@@ -94,9 +95,5 @@
       this.IsScheduled = original.IsScheduled;
     }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Task(this, cloner);
-    }
-
-
+    public Task() : this(-1, -1, -1, 0) { }
     public Task(int taskNr, int resNr, int jobNr, double duration)
       : base() {
@@ -106,4 +103,8 @@
       TaskNr = taskNr;
       IsScheduled = false;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Task(this, cloner);
     }
 
@@ -120,7 +121,9 @@
         return false;
     }
+
     public override int GetHashCode() {
       return TaskNr ^ JobNr;
     }
+
     public static bool AreEqual(Task task1, Task task2) {
       return (task1.Duration == task2.Duration &&
Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleManipulator.cs	(revision 8886)
+++ trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleManipulator.cs	(revision 8887)
@@ -30,12 +30,9 @@
   [Item("ScheduleManipulator", "A scheduling manipulation operation.")]
   [StorableClass]
-  public abstract class ScheduleManipulator<T> : SingleSuccessorOperator, IScheduleManipulator, IStochasticOperator where T : Item {
-    #region IScheduleManipulator Members
+  public abstract class ScheduleManipulator : SingleSuccessorOperator, IScheduleManipulator, IStochasticOperator {
 
-    public ILookupParameter<T> ScheduleEncodingParameter {
-      get { return (ILookupParameter<T>)Parameters["ScheduleEncoding"]; }
+    public ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter {
+      get { return (ILookupParameter<IScheduleEncoding>)Parameters["ScheduleEncoding"]; }
     }
-
-    #endregion
 
     public ILookupParameter<IRandom> RandomParameter {
@@ -45,10 +42,8 @@
     [StorableConstructor]
     protected ScheduleManipulator(bool deserializing) : base(deserializing) { }
-    protected ScheduleManipulator(ScheduleManipulator<T> original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    protected ScheduleManipulator(ScheduleManipulator original, Cloner cloner) : base(original, cloner) { }
     public ScheduleManipulator()
       : base() {
-      Parameters.Add(new LookupParameter<T>("ScheduleEncoding", "The scheduling solution to be manipulated."));
+      Parameters.Add(new LookupParameter<IScheduleEncoding>("ScheduleEncoding", "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."));
     }
