Index: trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 8757)
+++ 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 8757)
+++ 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 8757)
+++ 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);
     }
   }
