Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding.Views/3.3/ScheduleView.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding.Views/3.3/ScheduleView.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding.Views/3.3/ScheduleView.cs	(revision 13435)
@@ -67,29 +67,18 @@
     private void RedrawGanttChart(Schedule content) {
       ResetGanttChart();
-      int resCount = 0;
-      Random random = new Random(1);
-      foreach (Resource r in content.Resources) {
-        foreach (ScheduledTask t in content.Resources[resCount].Tasks) {
-          int categoryNr = 0;
-          string toolTip = "Task#" + t.TaskNr;
-          string categoryName = "ScheduleTasks";
-          if (t is ScheduledTask) {
-            categoryNr = ((ScheduledTask)t).JobNr;
-            categoryName = "Job" + categoryNr;
-            toolTip = categoryName + " - " + toolTip;
-          }
-          ganttChart.AddData("Resource" + r.Index,
+      foreach (Resource resource in content.Resources) {
+        foreach (ScheduledTask task in resource.Tasks) {
+          int categoryNr = task.JobNr;
+          string categoryName = "Job" + categoryNr;
+          string toolTip = categoryName + " - " + "Task#" + task.TaskNr;
+
+          ganttChart.AddData("Resource" + resource.Index,
             categoryNr,
-            t.TaskNr,
-            t.StartTime,
-            t.EndTime,
+            task.TaskNr,
+            task.StartTime,
+            task.EndTime,
             toolTip);
         }
-        resCount++;
       }
-    }
-
-    private void RefreshChartInformations(Schedule content) {
-
     }
 
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/HeuristicLab.Encodings.ScheduleEncoding-3.3.csproj
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/HeuristicLab.Encodings.ScheduleEncoding-3.3.csproj	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/HeuristicLab.Encodings.ScheduleEncoding-3.3.csproj	(revision 13435)
@@ -122,5 +122,5 @@
     <Compile Include="Interfaces\IScheduleCreator.cs" />
     <Compile Include="Interfaces\IScheduleCrossover.cs" />
-    <Compile Include="Interfaces\IScheduleEncoding.cs" />
+    <Compile Include="Interfaces\ISchedule.cs" />
     <Compile Include="Interfaces\IScheduleManipulator.cs" />
     <Compile Include="Interfaces\IScheduleOperator.cs" />
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/ISchedule.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/ISchedule.cs	(revision 13435)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/ISchedule.cs	(revision 13435)
@@ -0,0 +1,27 @@
+﻿#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.Core;
+
+namespace HeuristicLab.Encodings.ScheduleEncoding {
+  public interface ISchedule : IItem {
+  }
+}
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCreator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCreator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCreator.cs	(revision 13435)
@@ -25,5 +25,5 @@
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   public interface IScheduleCreator : ISolutionCreator, IScheduleOperator {
-    ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter { get; }
+    ILookupParameter<ISchedule> ScheduleParameter { get; }
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCrossover.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCrossover.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleCrossover.cs	(revision 13435)
@@ -25,6 +25,6 @@
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   public interface IScheduleCrossover : ICrossover, IScheduleOperator {
-    ILookupParameter<IScheduleEncoding> ChildParameter { get; }
-    IScopeTreeLookupParameter<IScheduleEncoding> ParentsParameter { get; }
+    ILookupParameter<ISchedule> ChildParameter { get; }
+    IScopeTreeLookupParameter<ISchedule> ParentsParameter { get; }
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEncoding.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleEncoding.cs	(revision 13422)
+++ 	(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.Core;
-
-namespace HeuristicLab.Encodings.ScheduleEncoding {
-  public interface IScheduleEncoding : IItem {
-  }
-}
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleManipulator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/Interfaces/IScheduleManipulator.cs	(revision 13435)
@@ -25,5 +25,5 @@
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   public interface IScheduleManipulator : IManipulator, IScheduleOperator {
-    ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter { get; }
+    ILookupParameter<ISchedule> ScheduleParameter { get; }
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMEncoding.cs	(revision 13435)
@@ -30,5 +30,5 @@
   [Item("JobSequenceMatrixEncoding", "Represents an encoding for a scheduling Problem using a list of job sequences to deliver scheduleinformation.")]
   [StorableClass]
-  public class JSMEncoding : Item, IScheduleEncoding {
+  public class JSMEncoding : Item, ISchedule {
 
     [Storable]
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JSMRandomCreator.cs	(revision 13435)
@@ -52,5 +52,5 @@
       Parameters.Add(new ValueLookupParameter<IntValue>("Resources", "The number of resources used in this problem instance."));
 
-      ScheduleEncodingParameter.ActualName = "JobSequenceMatrix";
+      ScheduleParameter.ActualName = "JobSequenceMatrix";
     }
 
@@ -67,5 +67,5 @@
     }
 
-    protected override IScheduleEncoding CreateSolution() {
+    protected override ISchedule CreateSolution() {
       return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue);
     }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMManipulator.cs	(revision 13435)
@@ -34,11 +34,11 @@
     public JSMManipulator()
       : base() {
-      ScheduleEncodingParameter.ActualName = "JobSequenceMatrix";
+      ScheduleParameter.ActualName = "JobSequenceMatrix";
     }
 
-    protected abstract void Manipulate(IRandom random, IScheduleEncoding individual);
+    protected abstract void Manipulate(IRandom random, ISchedule individual);
 
     public override IOperation InstrumentedApply() {
-      var solution = ScheduleEncodingParameter.ActualValue as JSMEncoding;
+      var solution = ScheduleParameter.ActualValue as JSMEncoding;
       if (solution == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type JSMEncoding.");
       Manipulate(RandomParameter.ActualValue, solution);
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMShiftChangeManipulator.cs	(revision 13435)
@@ -63,5 +63,5 @@
     }
 
-    protected override void Manipulate(IRandom random, IScheduleEncoding encoding) {
+    protected override void Manipulate(IRandom random, ISchedule encoding) {
       var solution = encoding as JSMEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type JSMEncoding");
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Manipulators/JSMSwapManipulator.cs	(revision 13435)
@@ -50,5 +50,5 @@
     }
 
-    protected override void Manipulate(IRandom random, IScheduleEncoding individual) {
+    protected override void Manipulate(IRandom random, ISchedule individual) {
       var solution = individual as JSMEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type JSMEncoding");
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Manipulators/PWRManipulator.cs	(revision 13435)
@@ -35,5 +35,5 @@
     public PWRManipulator()
       : base() {
-      ScheduleEncodingParameter.ActualName = "PermutationWithRepetition";
+      ScheduleParameter.ActualName = "PermutationWithRepetition";
     }
 
@@ -41,5 +41,5 @@
 
     public override IOperation InstrumentedApply() {
-      var solution = ScheduleEncodingParameter.ActualValue as PWREncoding;
+      var solution = ScheduleParameter.ActualValue as PWREncoding;
       if (solution == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type PWREncoding.");
       Manipulate(RandomParameter.ActualValue, solution);
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWREncoding.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWREncoding.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWREncoding.cs	(revision 13435)
@@ -29,5 +29,5 @@
   [Item("PermutationWithRepetitionEncoding", "Represents a encoding for a standard JobShop Scheduling Problem.")]
   [StorableClass]
-  public class PWREncoding : Item, IScheduleEncoding {
+  public class PWREncoding : Item, ISchedule {
 
     [Storable]
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PWRRandomCreator.cs	(revision 13435)
@@ -51,5 +51,5 @@
       Parameters.Add(new ValueLookupParameter<IntValue>("Resources", "The number of resources used in this problem instance."));
 
-      ScheduleEncodingParameter.ActualName = "PermutationWithRepetition";
+      ScheduleParameter.ActualName = "PermutationWithRepetition";
     }
 
@@ -62,5 +62,5 @@
     }
 
-    protected override IScheduleEncoding CreateSolution() {
+    protected override ISchedule CreateSolution() {
       return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue);
     }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Manipulators/PRVManipulator.cs	(revision 13435)
@@ -34,5 +34,5 @@
     public PRVManipulator()
       : base() {
-      ScheduleEncodingParameter.ActualName = "PriorityRulesVector";
+      ScheduleParameter.ActualName = "PriorityRulesVector";
     }
 
@@ -40,5 +40,5 @@
 
     public override IOperation InstrumentedApply() {
-      var solution = ScheduleEncodingParameter.ActualValue as PRVEncoding;
+      var solution = ScheduleParameter.ActualValue as PRVEncoding;
       if (solution == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type PRVEncoding.");
       Manipulate(RandomParameter.ActualValue, solution);
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVEncoding.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVEncoding.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVEncoding.cs	(revision 13435)
@@ -30,5 +30,5 @@
   [Item("PriorityRulesVectorEncoding", "Represents an encoding for a Scheduling Problem.")]
   [StorableClass]
-  public class PRVEncoding : Item, IScheduleEncoding {
+  public class PRVEncoding : Item, ISchedule {
     [Storable]
     public IntegerVector PriorityRulesVector { get; set; }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PRVRandomCreator.cs	(revision 13435)
@@ -57,5 +57,5 @@
       Parameters.Add(new ValueLookupParameter<IntValue>("Jobs", "The number of jobs handled in this problem instance."));
       Parameters.Add(new ValueLookupParameter<IntValue>("Resources", "The number of resources used in this problem instance."));
-      ScheduleEncodingParameter.ActualName = "PriorityRulesVector";
+      ScheduleParameter.ActualName = "PriorityRulesVector";
     }
 
@@ -68,5 +68,5 @@
     }
 
-    protected override IScheduleEncoding CreateSolution() {
+    protected override ISchedule CreateSolution() {
       return Apply(JobsParameter.ActualValue.Value, ResourcesParameter.ActualValue.Value, RandomParameter.ActualValue, NrOfRules);
     }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCreator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCreator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCreator.cs	(revision 13435)
@@ -31,6 +31,6 @@
   public abstract class ScheduleCreator : InstrumentedOperator, IScheduleCreator {
 
-    public ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter {
-      get { return (ILookupParameter<IScheduleEncoding>)Parameters["ScheduleEncoding"]; }
+    public ILookupParameter<ISchedule> ScheduleParameter {
+      get { return (ILookupParameter<ISchedule>)Parameters["Schedule"]; }
     }
 
@@ -40,13 +40,13 @@
     public ScheduleCreator()
       : base() {
-      Parameters.Add(new LookupParameter<IScheduleEncoding>("ScheduleEncoding", "The new scheduling solutioncandidate."));
+      Parameters.Add(new LookupParameter<ISchedule>("Schedule", "The new scheduling solutioncandidate."));
     }
 
     public override IOperation InstrumentedApply() {
-      ScheduleEncodingParameter.ActualValue = CreateSolution();
+      ScheduleParameter.ActualValue = CreateSolution();
       return base.InstrumentedApply();
     }
 
-    protected abstract IScheduleEncoding CreateSolution();
+    protected abstract ISchedule CreateSolution();
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCrossover.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCrossover.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleCrossover.cs	(revision 13435)
@@ -32,9 +32,9 @@
   public abstract class ScheduleCrossover : InstrumentedOperator, IScheduleCrossover, IStochasticOperator {
 
-    public ILookupParameter<IScheduleEncoding> ChildParameter {
-      get { return (ILookupParameter<IScheduleEncoding>)Parameters["Child"]; }
+    public ILookupParameter<ISchedule> ChildParameter {
+      get { return (ILookupParameter<ISchedule>)Parameters["Child"]; }
     }
-    public IScopeTreeLookupParameter<IScheduleEncoding> ParentsParameter {
-      get { return (IScopeTreeLookupParameter<IScheduleEncoding>)Parameters["Parents"]; }
+    public IScopeTreeLookupParameter<ISchedule> ParentsParameter {
+      get { return (IScopeTreeLookupParameter<ISchedule>)Parameters["Parents"]; }
     }
     public ILookupParameter<IRandom> RandomParameter {
@@ -48,8 +48,8 @@
       : base() {
       Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator which should be used for stochastic manipulation operators."));
-      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<ISchedule>("Child", "The child solution resulting from the crossover."));
+      ChildParameter.ActualName = "Schedule";
+      Parameters.Add(new ScopeTreeLookupParameter<ISchedule>("Parents", "The parent solution which should be crossed."));
+      ParentsParameter.ActualName = "Schedule";
     }
   }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleRandomCreator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleRandomCreator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleRandomCreator.cs	(revision 13435)
@@ -63,5 +63,5 @@
       Parameters.Add(new ValueLookupParameter<IntValue>("Resources", "The number of resources used in this problem instance."));
       Parameters.Add(new LookupParameter<ItemList<Job>>("JobData", "Job data taken from the JSSP - Instance."));
-      ScheduleEncodingParameter.ActualName = "Schedule";
+      ScheduleParameter.ActualName = "Schedule";
     }
 
@@ -82,5 +82,5 @@
 
 
-    protected override IScheduleEncoding CreateSolution() {
+    protected override ISchedule CreateSolution() {
       try {
         var jobData = (ItemList<Job>)JobDataParameter.ActualValue.Clone();
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Job.cs	(revision 13435)
@@ -31,5 +31,5 @@
   [Item("Job", "Represents a composition of tasks that require processing in a scheduling problem.")]
   [StorableClass]
-  public class Job : Item, INotifyPropertyChanged {
+  public sealed class Job : Item, INotifyPropertyChanged {
 
     [Storable(Name = "DueDate")]
@@ -38,10 +38,8 @@
       get { return dueDate; }
       set {
-        bool changed = dueDate != value;
+        if (dueDate == value) return;
         dueDate = value;
-        if (changed) {
-          OnPropertyChanged("DueDate");
-          OnToStringChanged();
-        }
+        OnPropertyChanged("DueDate");
+        OnToStringChanged();
       }
     }
@@ -52,10 +50,8 @@
       get { return index; }
       set {
-        bool changed = index != value;
+        if (index == value) return;
         index = value;
-        if (changed) {
-          OnPropertyChanged("Index");
-          OnToStringChanged();
-        }
+        OnPropertyChanged("Index");
+        OnToStringChanged();
       }
     }
@@ -65,14 +61,13 @@
     public ItemList<Task> Tasks {
       get { return tasks; }
-      set {
-        bool changed = tasks != value;
+      private set {
         tasks = value;
-        if (changed) OnPropertyChanged("Tasks");
+        OnPropertyChanged("Tasks");
       }
     }
 
     [StorableConstructor]
-    protected Job(bool deserializing) : base(deserializing) { }
-    protected Job(Job original, Cloner cloner)
+    private Job(bool deserializing) : base(deserializing) { }
+    private Job(Job original, Cloner cloner)
       : base(original, cloner) {
       this.dueDate = original.DueDate;
@@ -151,11 +146,6 @@
     }
 
-    internal Task GetPreviousTask(Task t) {
-      if (t.TaskNr == 0) return null;
-      return Tasks[t.TaskNr - 1];
-    }
-
     public event EventHandler TasksChanged;
-    protected virtual void OnTasksChanged() {
+    private void OnTasksChanged() {
       var handler = TasksChanged;
       if (handler != null) handler(this, EventArgs.Empty);
@@ -163,5 +153,5 @@
 
     public event PropertyChangedEventHandler PropertyChanged;
-    protected virtual void OnPropertyChanged(string propertyName) {
+    private void OnPropertyChanged(string propertyName) {
       var handler = PropertyChanged;
       if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Manipulators/DirectScheduleManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Manipulators/DirectScheduleManipulator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Manipulators/DirectScheduleManipulator.cs	(revision 13435)
@@ -35,5 +35,5 @@
     public DirectScheduleManipulator()
       : base() {
-      ScheduleEncodingParameter.ActualName = "Schedule";
+      ScheduleParameter.ActualName = "Schedule";
     }
 
@@ -41,5 +41,5 @@
 
     public override IOperation InstrumentedApply() {
-      var schedule = ScheduleEncodingParameter.ActualValue as Schedule;
+      var schedule = ScheduleParameter.ActualValue as Schedule;
       if (schedule == null) throw new InvalidOperationException("ScheduleEncoding was not found or is not of type Schedule.");
       Manipulate(RandomParameter.ActualValue, schedule);
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Resource.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Resource.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Resource.cs	(revision 13435)
@@ -20,4 +20,5 @@
 #endregion
 
+using System.Linq;
 using System.Text;
 using HeuristicLab.Common;
@@ -28,20 +29,22 @@
   [Item("ResourceClass", "Represents a resource used in scheduling problems.")]
   [StorableClass]
-  public class Resource : Item {
+  public sealed class Resource : Item {
 
     [Storable]
-    public int Index {
-      get;
-      set;
-    }
+    public int Index { get; private set; }
     [Storable]
-    public ItemList<ScheduledTask> Tasks {
-      get;
-      set;
+    public ItemList<ScheduledTask> Tasks { get; private set; }
+
+    //TODO why does a Ressource has a duration?
+    public double TotalDuration {
+      get {
+        if (Tasks.Count == 0) return 0.0;
+        return Tasks.Max(t => t.EndTime);
+      }
     }
 
     [StorableConstructor]
-    protected Resource(bool deserializing) : base(deserializing) { }
-    protected Resource(Resource original, Cloner cloner)
+    private Resource(bool deserializing) : base(deserializing) { }
+    private Resource(Resource original, Cloner cloner)
       : base(original, cloner) {
       this.Index = original.Index;
@@ -58,20 +61,9 @@
     }
 
-    public double TotalDuration {
-      get {
-        double result = 0;
-        foreach (ScheduledTask t in Tasks) {
-          if (t.EndTime > result)
-            result = t.EndTime;
-        }
-        return result;
-      }
-    }
-
     public override string ToString() {
       StringBuilder sb = new StringBuilder();
       sb.Append("Resource#" + Index + " [ ");
       foreach (ScheduledTask t in Tasks) {
-        sb.Append(t+ " ");
+        sb.Append(t + " ");
       }
       sb.Append("]");
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Schedule.cs	(revision 13435)
@@ -25,5 +25,4 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Data;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -31,5 +30,5 @@
   [Item("Schedule", "Represents the general solution for scheduling problems.")]
   [StorableClass]
-  public class Schedule : NamedItem, IScheduleEncoding {
+  public class Schedule : NamedItem, ISchedule {
 
     #region Properties
@@ -38,22 +37,13 @@
     public ItemList<Resource> Resources {
       get { return resources; }
-      set {
-        if (resources != null) DeregisterResourcesEvents();
-        resources = value;
-        if (resources != null) RegisterResourcesEvents();
-        OnResourcesChanged();
-      }
     }
     [Storable]
-    private DoubleValue quality;
-    public DoubleValue Quality {
+    private double quality;
+    public double Quality {
       get { return quality; }
       set {
-        if (quality != value) {
-          if (quality != null) DeregisterQualityEvents();
-          quality = value;
-          if (quality != null) RegisterQualityEvents();
-          OnQualityChanged();
-        }
+        if (quality == value) return;
+        quality = value;
+        OnQualityChanged();
       }
     }
@@ -66,14 +56,19 @@
     protected Schedule(Schedule original, Cloner cloner)
       : base(original, cloner) {
-      this.Resources = cloner.Clone(original.Resources);
-      this.Quality = cloner.Clone(original.Quality);
+      this.resources = cloner.Clone(original.Resources);
+      this.quality = original.Quality;
+      //TODO clone
       this.lastScheduledTaskOfJob = new Dictionary<int, ScheduledTask>(original.lastScheduledTaskOfJob);
+
+      RegisterResourcesEvents();
     }
     public Schedule(int nrOfResources) {
-      Resources = new ItemList<Resource>();
+      resources = new ItemList<Resource>();
       for (int i = 0; i < nrOfResources; i++) {
         Resources.Add(new Resource(i));
       }
       lastScheduledTaskOfJob = new Dictionary<int, ScheduledTask>();
+
+      RegisterResourcesEvents();
     }
 
@@ -89,13 +84,4 @@
         changed(this, EventArgs.Empty);
     }
-    private void RegisterQualityEvents() {
-      Quality.ValueChanged += new EventHandler(Quality_ValueChanged);
-    }
-    private void DeregisterQualityEvents() {
-      Quality.ValueChanged -= new EventHandler(Quality_ValueChanged);
-    }
-    private void Quality_ValueChanged(object sender, EventArgs e) {
-      OnQualityChanged();
-    }
 
     public event EventHandler ResourcesChanged;
@@ -107,7 +93,4 @@
     private void RegisterResourcesEvents() {
       Resources.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Resources_PropertyChanged);
-    }
-    private void DeregisterResourcesEvents() {
-      Resources.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(Resources_PropertyChanged);
     }
     private void Resources_PropertyChanged(object sender, EventArgs e) {
@@ -154,14 +137,4 @@
       return sb.ToString();
     }
-
-    public double CalculateMakespan() {
-      double quality = 0;
-      foreach (Resource r in Resources) {
-        if (r.TotalDuration > quality) {
-          quality = r.TotalDuration;
-        }
-      }
-      return quality;
-    }
   }
 }
Index: branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleManipulator.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleManipulator.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleManipulator.cs	(revision 13435)
@@ -32,6 +32,6 @@
   public abstract class ScheduleManipulator : InstrumentedOperator, IScheduleManipulator, IStochasticOperator {
 
-    public ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter {
-      get { return (ILookupParameter<IScheduleEncoding>)Parameters["ScheduleEncoding"]; }
+    public ILookupParameter<ISchedule> ScheduleParameter {
+      get { return (ILookupParameter<ISchedule>)Parameters["Schedule"]; }
     }
 
@@ -45,5 +45,5 @@
     public ScheduleManipulator()
       : base() {
-      Parameters.Add(new LookupParameter<IScheduleEncoding>("ScheduleEncoding", "The scheduling solution to be manipulated."));
+      Parameters.Add(new LookupParameter<ISchedule>("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."));
     }
Index: branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Analyzers/BestSchedulingSolutionAnalyzer.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Analyzers/BestSchedulingSolutionAnalyzer.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Analyzers/BestSchedulingSolutionAnalyzer.cs	(revision 13435)
@@ -20,4 +20,5 @@
 #endregion
 
+using System.Collections.Generic;
 using System.Linq;
 using HeuristicLab.Common;
@@ -77,12 +78,13 @@
       if (bestSolution == null) {
         bestSolution = (Schedule)solutions[i].Clone();
-        bestSolution.Quality = (DoubleValue)qualities[i].Clone();
+        bestSolution.Quality = qualities[i].Value;
         BestSolutionParameter.ActualValue = bestSolution;
         results.Add(new Result("Best Scheduling Solution", bestSolution));
       } else {
-        if (max && bestSolution.Quality.Value < qualities[i].Value ||
-          !max && bestSolution.Quality.Value > qualities[i].Value) {
-          bestSolution.Quality.Value = qualities[i].Value;
-          bestSolution.Resources = (ItemList<Resource>)solutions[i].Resources.Clone();
+        if (max && bestSolution.Quality < qualities[i].Value ||
+          !max && bestSolution.Quality > qualities[i].Value) {
+          bestSolution.Quality = qualities[i].Value;
+          bestSolution.Resources.Clear();
+          bestSolution.Resources.AddRange((IEnumerable<Resource>)solutions[i].Resources.Clone());
         }
       }
Index: branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/JSMDecoder.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/JSMDecoder.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/JSMDecoder.cs	(revision 13435)
@@ -177,5 +177,5 @@
     }
 
-    public override Schedule CreateScheduleFromEncoding(IScheduleEncoding encoding) {
+    public override Schedule CreateScheduleFromEncoding(ISchedule encoding) {
       var solution = encoding as JSMEncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type JSMEncoding");
Index: branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/PRVDecoder.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/PRVDecoder.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/PRVDecoder.cs	(revision 13435)
@@ -202,7 +202,7 @@
     }
 
-    public override Schedule CreateScheduleFromEncoding(IScheduleEncoding encoding) {
+    public override Schedule CreateScheduleFromEncoding(ISchedule encoding) {
       var solution = encoding as PRVEncoding;
-      if (solution == null) throw new InvalidOperationException("Encoding is not of type PWREncoding");
+      if (solution == null) throw new InvalidOperationException("Encoding is not of type PRVEncoding");
 
       var jobs = (ItemList<Job>)JobDataParameter.ActualValue.Clone();
Index: branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/PWRDecoder.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/PWRDecoder.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/PWRDecoder.cs	(revision 13435)
@@ -55,5 +55,5 @@
     }
 
-    public override Schedule CreateScheduleFromEncoding(IScheduleEncoding encoding) {
+    public override Schedule CreateScheduleFromEncoding(ISchedule encoding) {
       var solution = encoding as PWREncoding;
       if (solution == null) throw new InvalidOperationException("Encoding is not of type PWREncoding");
Index: branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/ScheduleDecoder.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/ScheduleDecoder.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Decoders/ScheduleDecoder.cs	(revision 13435)
@@ -32,6 +32,6 @@
   public abstract class ScheduleDecoder : SingleSuccessorOperator, IScheduleDecoder {
 
-    public ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter {
-      get { return (ILookupParameter<IScheduleEncoding>)Parameters["ScheduleEncoding"]; }
+    public ILookupParameter<ISchedule> ScheduleEncodingParameter {
+      get { return (ILookupParameter<ISchedule>)Parameters["ScheduleEncoding"]; }
     }
     public ILookupParameter<Schedule> ScheduleParameter {
@@ -44,9 +44,9 @@
     public ScheduleDecoder()
       : base() {
-      Parameters.Add(new LookupParameter<IScheduleEncoding>("ScheduleEncoding", "The new scheduling solution represented as encoding."));
+      Parameters.Add(new LookupParameter<ISchedule>("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(IScheduleEncoding solution);
+    public abstract Schedule CreateScheduleFromEncoding(ISchedule solution);
 
     public override IOperation Apply() {
Index: branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Interfaces/IScheduleDecoder.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Interfaces/IScheduleDecoder.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/Interfaces/IScheduleDecoder.cs	(revision 13435)
@@ -24,5 +24,5 @@
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   public interface IScheduleDecoder : IOperator {
-    ILookupParameter<IScheduleEncoding> ScheduleEncodingParameter { get; }
+    ILookupParameter<ISchedule> ScheduleEncodingParameter { get; }
     ILookupParameter<Schedule> ScheduleParameter { get; }
   }
Index: branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs
===================================================================
--- branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs	(revision 13422)
+++ branches/ProblemRefactoring/HeuristicLab.Problems.Scheduling/3.3/JobShopSchedulingProblem.cs	(revision 13435)
@@ -164,5 +164,5 @@
       ScheduleEvaluatorParameter.ValueChanged += ScheduleEvaluatorParameter_ValueChanged;
       ScheduleEvaluator.QualityParameter.ActualNameChanged += ScheduleEvaluator_QualityParameter_ActualNameChanged;
-      SolutionCreator.ScheduleEncodingParameter.ActualNameChanged += SolutionCreator_SchedulingEncodingParameter_ActualNameChanged;
+      SolutionCreator.ScheduleParameter.ActualNameChanged += SolutionCreator_SchedulingEncodingParameter_ActualNameChanged;
       ScheduleDecoderParameter.ValueChanged += ScheduleDecoderParameter_ValueChanged;
       if (ScheduleDecoder != null) ScheduleDecoder.ScheduleParameter.ActualNameChanged += ScheduleDecoder_ScheduleParameter_ActualNameChanged;
@@ -171,5 +171,5 @@
     #region Events
     protected override void OnSolutionCreatorChanged() {
-      SolutionCreator.ScheduleEncodingParameter.ActualNameChanged += SolutionCreator_SchedulingEncodingParameter_ActualNameChanged;
+      SolutionCreator.ScheduleParameter.ActualNameChanged += SolutionCreator_SchedulingEncodingParameter_ActualNameChanged;
       InitializeOperators();
     }
@@ -288,5 +288,5 @@
 
       if (ScheduleDecoder != null)
-        ScheduleDecoder.ScheduleEncodingParameter.ActualName = SolutionCreator.ScheduleEncodingParameter.ActualName;
+        ScheduleDecoder.ScheduleEncodingParameter.ActualName = SolutionCreator.ScheduleParameter.ActualName;
 
       if (ScheduleDecoder != null) {
@@ -295,5 +295,5 @@
       } else if (SolutionCreator is DirectScheduleRandomCreator) {
         var directEvaluator = (DirectScheduleRandomCreator)SolutionCreator;
-        ScheduleEvaluator.ScheduleParameter.ActualName = directEvaluator.ScheduleEncodingParameter.ActualName;
+        ScheduleEvaluator.ScheduleParameter.ActualName = directEvaluator.ScheduleParameter.ActualName;
         ScheduleEvaluator.ScheduleParameter.Hidden = true;
       } else {
@@ -303,12 +303,12 @@
 
       foreach (var op in Operators.OfType<IScheduleManipulator>()) {
-        op.ScheduleEncodingParameter.ActualName = SolutionCreator.ScheduleEncodingParameter.ActualName;
-        op.ScheduleEncodingParameter.Hidden = true;
+        op.ScheduleParameter.ActualName = SolutionCreator.ScheduleParameter.ActualName;
+        op.ScheduleParameter.Hidden = true;
       }
 
       foreach (var op in Operators.OfType<IScheduleCrossover>()) {
-        op.ChildParameter.ActualName = SolutionCreator.ScheduleEncodingParameter.ActualName;
+        op.ChildParameter.ActualName = SolutionCreator.ScheduleParameter.ActualName;
         op.ChildParameter.Hidden = true;
-        op.ParentsParameter.ActualName = SolutionCreator.ScheduleEncodingParameter.ActualName;
+        op.ParentsParameter.ActualName = SolutionCreator.ScheduleParameter.ActualName;
         op.ParentsParameter.Hidden = true;
       }
@@ -320,5 +320,5 @@
           op.ScheduleParameter.Hidden = true;
         } else if (SolutionCreator is DirectScheduleRandomCreator) {
-          op.ScheduleParameter.ActualName = ((DirectScheduleRandomCreator)SolutionCreator).ScheduleEncodingParameter.ActualName;
+          op.ScheduleParameter.ActualName = ((DirectScheduleRandomCreator)SolutionCreator).ScheduleParameter.ActualName;
           op.ScheduleParameter.Hidden = true;
         } else {
