Index: branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Decoders/JSMDecoder.cs
===================================================================
--- branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Decoders/JSMDecoder.cs	(revision 6364)
+++ branches/Scheduling/HeuristicLab.Problems.Scheduling/3.3/Decoders/JSMDecoder.cs	(revision 6406)
@@ -20,36 +20,19 @@
 #endregion
 
-using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-using HeuristicLab.Data;
 using HeuristicLab.Encodings.PermutationEncoding;
+using HeuristicLab.Encodings.ScheduleEncoding;
+using HeuristicLab.Encodings.ScheduleEncoding.JobSequenceMatrix;
 using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
-using HeuristicLab.Encodings.SchedulingEncoding.JobSequenceMatrix;
-using HeuristicLab.Encodings.SchedulingEncoding;
-using HeuristicLab.Problems.Scheduling.Interfaces;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
-namespace HeuristicLab.Problems.Scheduling.Decoders {
-  [Item("Job Sequence Matrix Decoder", "Applies the GifflerThompson algorithm to create an active schedule from a JobSequence Matrix.")]
+namespace HeuristicLab.Problems.Scheduling {
+  [Item("JobSequenceMatrixDecoder", "Applies the GifflerThompson algorithm to create an active schedule from a JobSequence Matrix.")]
   [StorableClass]
-  public class JSMDecoder : SchedulingDecoder<JSMEncoding>, IStochasticOperator, IJSSPOperator {
-    [StorableConstructor]
-    protected JSMDecoder(bool deserializing) : base(deserializing) { }
-    protected JSMDecoder(JSMDecoder original, Cloner cloner)
-      : base(original, cloner) {
-        this.resultingSchedule = cloner.Clone(original.resultingSchedule);
-        this.jobs = cloner.Clone(original.jobs);
-        this.decodingErrorPolicy = original.decodingErrorPolicy;
-        this.forcingStrategy = original.forcingStrategy;
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new JSMDecoder(this, cloner);
-    }
-
+  public class JSMDecoder : ScheduleDecoder<JSMEncoding>, IStochasticOperator, IJSSPOperator {
     public ILookupParameter<IRandom> RandomParameter {
       get { return (LookupParameter<IRandom>)Parameters["Random"]; }
@@ -70,6 +53,19 @@
 
     [Storable]
-    private JSMForcingStrategyTypes forcingStrategy = JSMForcingStrategyTypes.ShiftForcing; 
+    private JSMForcingStrategyTypes forcingStrategy = JSMForcingStrategyTypes.ShiftForcing;
     #endregion
+
+    [StorableConstructor]
+    protected JSMDecoder(bool deserializing) : base(deserializing) { }
+    protected JSMDecoder(JSMDecoder original, Cloner cloner)
+      : base(original, cloner) {
+      this.resultingSchedule = cloner.Clone(original.resultingSchedule);
+      this.jobs = cloner.Clone(original.jobs);
+      this.decodingErrorPolicy = original.decodingErrorPolicy;
+      this.forcingStrategy = original.forcingStrategy;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new JSMDecoder(this, cloner);
+    }
 
     public JSMDecoder()
@@ -77,11 +73,12 @@
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
       Parameters.Add(new LookupParameter<ItemList<Job>>("JobData", "Job data taken from the Schedulingproblem - Instance."));
+      ScheduleEncodingParameter.ActualName = "JobSequenceMatrix";
     }
 
-    
+
     private Task SelectTaskFromConflictSet(int conflictedResourceNr, int progressOnConflictedResource, ItemList<Task> conflictSet, ItemList<Permutation> jsm) {
       if (conflictSet.Count == 1)
         return conflictSet[0];
-      
+
       //get solutionCandidate from jobSequencingMatrix
       int solutionCandidateJobNr = jsm[conflictedResourceNr][progressOnConflictedResource];
@@ -104,5 +101,5 @@
     }
     private Task ApplyDecodingErrorPolicy(ItemList<Task> conflictSet, Permutation resource, int progress) {
-      if (decodingErrorPolicy == JSMDecodingErrorPolicyTypes.RandomPolicy) { 
+      if (decodingErrorPolicy == JSMDecodingErrorPolicyTypes.RandomPolicy) {
         //Random
         return conflictSet[RandomParameter.ActualValue.Next(conflictSet.Count - 1)];
@@ -118,5 +115,5 @@
         }
         return conflictSet[RandomParameter.ActualValue.Next(conflictSet.Count - 1)];
-      }    
+      }
     }
     private void ApplyForcingStrategy(ItemList<Permutation> jsm, int conflictedResource, int newResolutionIndex, int progressOnResource, int newResolution) {
@@ -132,9 +129,9 @@
           asList.Insert(progressOnResource, newResolution);
         } else {
-          asList.Insert(progressOnResource, newResolution); 
+          asList.Insert(progressOnResource, newResolution);
           asList.RemoveAt(newResolutionIndex);
         }
-        jsm[conflictedResource] = new Permutation (PermutationTypes.Absolute, asList.ToArray<int>());
-      } 
+        jsm[conflictedResource] = new Permutation(PermutationTypes.Absolute, asList.ToArray<int>());
+      }
     }
 
@@ -143,5 +140,5 @@
 
       jobs = (ItemList<Job>)jobData.Clone();
-      resultingSchedule = new Schedule(new IntValue(jobs[0].Tasks.Count));
+      resultingSchedule = new Schedule(jobs[0].Tasks.Count);
 
       //Reset scheduled tasks in result
@@ -186,5 +183,5 @@
     public override IOperation Apply() {
       return base.Apply();
-    }    
+    }
   }
 }
