Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Decoder/JSMDecoder.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Decoder/JSMDecoder.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/Decoder/JSMDecoder.cs	(revision 16725)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -28,10 +29,9 @@
 using HeuristicLab.Encodings.PermutationEncoding;
 using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   [Item("JobSequenceMatrixDecoder", "Applies the GifflerThompson algorithm to create an active schedule from a JobSequence Matrix.")]
-  [StorableClass]
+  [StorableType("BBE354C2-7599-43CC-ACDC-F8F0F65BE3F5")]
   public class JSMDecoder : ScheduleDecoder<JSMEncoding> {
 
@@ -52,5 +52,5 @@
 
     [StorableConstructor]
-    protected JSMDecoder(bool deserializing) : base(deserializing) { }
+    protected JSMDecoder(StorableConstructorFlag _) : base(_) { }
     protected JSMDecoder(JSMDecoder original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JobSequenceMatrixEncoding.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JobSequenceMatrixEncoding.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/JobSequenceMatrix/JobSequenceMatrixEncoding.cs	(revision 16725)
@@ -25,14 +25,14 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [StorableClass]
+  [StorableType("9C090369-0214-42E6-8C3E-369751F5A9E1")]
   public sealed class JobSequenceMatrixEncoding : ScheduleEncoding<JSMEncoding> {
     [StorableConstructor]
-    private JobSequenceMatrixEncoding(bool deserializing) : base(deserializing) { }
+    private JobSequenceMatrixEncoding(StorableConstructorFlag _) : base(_) { }
     private JobSequenceMatrixEncoding(JobSequenceMatrixEncoding original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Decoder/PWRDecoder.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Decoder/PWRDecoder.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/Decoder/PWRDecoder.cs	(revision 16725)
@@ -20,15 +20,14 @@
 #endregion
 
-using System;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   [Item("PWRDecoder", "An item used to convert a PWR-individual into a generalized schedule.")]
-  [StorableClass]
+  [StorableType("60D171BE-9704-40E1-9C63-0E56D95403CD")]
   public class PWRDecoder : ScheduleDecoder<PWREncoding> {
     [StorableConstructor]
-    protected PWRDecoder(bool deserializing) : base(deserializing) { }
+    protected PWRDecoder(StorableConstructorFlag _) : base(_) { }
     protected PWRDecoder(PWRDecoder original, Cloner cloner) : base(original, cloner) { }
     public PWRDecoder() : base() { }
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PermutationWithRepetitionEncoding.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PermutationWithRepetitionEncoding.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PermutationWithRepetition/PermutationWithRepetitionEncoding.cs	(revision 16725)
@@ -25,14 +25,14 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [StorableClass]
+  [StorableType("468EF506-0749-469B-B9B9-36655AA0178D")]
   public sealed class PermutationWithRepetitionEncoding : ScheduleEncoding<PWREncoding> {
     [StorableConstructor]
-    private PermutationWithRepetitionEncoding(bool deserializing) : base(deserializing) { }
+    private PermutationWithRepetitionEncoding(StorableConstructorFlag _) : base(_) { }
     private PermutationWithRepetitionEncoding(PermutationWithRepetitionEncoding original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Decoder/PRVDecoder.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Decoder/PRVDecoder.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/Decoder/PRVDecoder.cs	(revision 16725)
@@ -21,12 +21,12 @@
 
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.Random;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   [Item("JobSequencingMatrixDecoder", "Applies the GifflerThompson algorithm to create an active schedule from a JobSequencing Matrix.")]
-  [StorableClass]
+  [StorableType("2D059957-AC7C-4B33-BADE-96706AEBAF29")]
   public class PRVDecoder : ScheduleDecoder<PRVEncoding> {
     #region Priority Rules
@@ -158,5 +158,5 @@
 
     [StorableConstructor]
-    protected PRVDecoder(bool deserializing) : base(deserializing) { }
+    protected PRVDecoder(StorableConstructorFlag _) : base(_) { }
     protected PRVDecoder(PRVDecoder original, Cloner cloner) : base(original, cloner) { }
     public PRVDecoder() : base() { }
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PriorityRulesVectorEncoding.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PriorityRulesVectorEncoding.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/PriorityRulesVector/PriorityRulesVectorEncoding.cs	(revision 16725)
@@ -25,13 +25,13 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
 using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [StorableClass]
+  [StorableType("9C419EE5-F3A8-4F06-8263-7D37D3AE1C72")]
   public sealed class PriorityRulesVectorEncoding : ScheduleEncoding<PRVEncoding> {
 
@@ -53,5 +53,5 @@
 
     [StorableConstructor]
-    private PriorityRulesVectorEncoding(bool deserializing) : base(deserializing) { }
+    private PriorityRulesVectorEncoding(StorableConstructorFlag _) : base(_) { }
     private PriorityRulesVectorEncoding(PriorityRulesVectorEncoding original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleDecoder.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleDecoder.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleDecoder.cs	(revision 16725)
@@ -21,13 +21,13 @@
 
 using System;
+using HEAL.Attic;
 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 schedule decoder translates a respresentation into an actual schedule.")]
-  [StorableClass]
+  [StorableType("57A68F4B-4B35-4DB4-9B5E-D5154DD46E45")]
   public abstract class ScheduleDecoder<TSchedule> : SingleSuccessorOperator, IScheduleDecoder<TSchedule>
   where TSchedule : class, ISchedule {
@@ -44,5 +44,5 @@
 
     [StorableConstructor]
-    protected ScheduleDecoder(bool deserializing) : base(deserializing) { }
+    protected ScheduleDecoder(StorableConstructorFlag _) : base(_) { }
     protected ScheduleDecoder(ScheduleDecoder<TSchedule> original, Cloner cloner) : base(original, cloner) { }
     public ScheduleDecoder()
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding.cs	(revision 16725)
@@ -25,4 +25,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -30,8 +31,7 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [StorableClass]
+  [StorableType("D2FB1AF9-EF13-4ED2-B3E9-D5BE4E5772EA")]
   public abstract class ScheduleEncoding<TSchedule> : Encoding<TSchedule>, IScheduleEncoding
   where TSchedule : class, ISchedule {
@@ -119,5 +119,5 @@
 
     [StorableConstructor]
-    protected ScheduleEncoding(bool deserializing) : base(deserializing) { }
+    protected ScheduleEncoding(StorableConstructorFlag _) : base(_) { }
     protected ScheduleEncoding(ScheduleEncoding<TSchedule> original, Cloner cloner)
       : base(original, cloner) {
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Decoder/DirectScheduleDecoder.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Decoder/DirectScheduleDecoder.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/Decoder/DirectScheduleDecoder.cs	(revision 16725)
@@ -20,14 +20,14 @@
 #endregion
 
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
   [Item("DirectScheduleDecoder", "An item used to convert a direct schedule into a generalized schedule.")]
-  [StorableClass]
+  [StorableType("151C772B-6E6C-40D9-B171-F5626C676A5F")]
   public class DirectScheduleDecoder : ScheduleDecoder<Schedule> {
     [StorableConstructor]
-    protected DirectScheduleDecoder(bool deserializing) : base(deserializing) { }
+    protected DirectScheduleDecoder(StorableConstructorFlag _) : base(_) { }
     protected DirectScheduleDecoder(DirectScheduleDecoder original, Cloner cloner) : base(original, cloner) { }
     public DirectScheduleDecoder() : base() { }
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleEncoding.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleEncoding.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Encodings.ScheduleEncoding/3.3/ScheduleEncoding/DirectScheduleEncoding.cs	(revision 16725)
@@ -25,14 +25,14 @@
 using System.Collections.Generic;
 using System.Linq;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Encodings.ScheduleEncoding {
-  [StorableClass]
+  [StorableType("BB1BD851-3E77-4357-942C-EAF5BE6760B4")]
   public sealed class DirectScheduleEncoding : ScheduleEncoding<Schedule> {
     [StorableConstructor]
-    private DirectScheduleEncoding(bool deserializing) : base(deserializing) { }
+    private DirectScheduleEncoding(StorableConstructorFlag _) : base(_) { }
     private DirectScheduleEncoding(DirectScheduleEncoding original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/MultiObjectiveProgrammableProblem.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/MultiObjectiveProgrammableProblem.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/MultiObjectiveProgrammableProblem.cs	(revision 16725)
@@ -21,4 +21,5 @@
 
 using System.Drawing;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Common.Resources;
@@ -27,5 +28,4 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
-using HEAL.Attic;
 using HeuristicLab.Scripting;
 
@@ -61,5 +61,5 @@
 
     [StorableConstructor]
-    private MultiObjectiveProgrammableProblem(StorableConstructorFlag _) : base(_) { }
+    protected MultiObjectiveProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     protected MultiObjectiveProgrammableProblem(MultiObjectiveProgrammableProblem<TEncoding, TSolution> original, Cloner cloner)
       : base(original, cloner) {
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/ProblemDefinitionScript.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/ProblemDefinitionScript.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/ProblemDefinitionScript.cs	(revision 16725)
@@ -23,8 +23,8 @@
 using System.Linq;
 using System.Reflection;
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Optimization;
-using HEAL.Attic;
 using HeuristicLab.Scripting;
 
@@ -55,5 +55,5 @@
 
   [Item("ProblemDefinitionScript", "Script that defines the parameter vector and evaluates the solution for a programmable problem.")]
-  [StorableClass]
+  [StorableType("0B3AF22C-4744-4860-BBCF-A92046000847")]
   public abstract class ProblemDefinitionScript<TEncoding, TSolution> : ProblemDefinitionScript, IProblemDefinition<TEncoding, TSolution>
     where TEncoding : class, IEncoding<TSolution>
@@ -79,5 +79,5 @@
 
     [StorableConstructor]
-    protected ProblemDefinitionScript(bool deserializing) : base(deserializing) { }
+    protected ProblemDefinitionScript(StorableConstructorFlag _) : base(_) { }
     protected ProblemDefinitionScript(ProblemDefinitionScript<TEncoding, TSolution> original, Cloner cloner)
       : base(original, cloner) {
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/ProgrammableProblemInstances.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/ProgrammableProblemInstances.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/ProgrammableProblemInstances.cs	(revision 16725)
@@ -22,4 +22,5 @@
 #endregion
 
+using HEAL.Attic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -31,5 +32,4 @@
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Problems.Programmable {
@@ -37,9 +37,9 @@
   [Item("Binary Vector Problem (single-objective)", "Represents a binary vector single-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsSingleObjective, Priority = 100)]
-  [StorableClass]
+  [StorableType("FD06DC4B-FB2C-4325-817A-AC030683537B")]
   public sealed class SingleObjectiveBinaryVectorProgrammableProblem : SingleObjectiveProgrammableProblem<BinaryVectorEncoding, BinaryVector> {
 
     [StorableConstructor]
-    private SingleObjectiveBinaryVectorProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private SingleObjectiveBinaryVectorProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private SingleObjectiveBinaryVectorProgrammableProblem(SingleObjectiveBinaryVectorProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
 
@@ -61,9 +61,9 @@
   [Item("Integer Vector Problem (single-objective)", "Represents an integer vector single-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsSingleObjective, Priority = 101)]
-  [StorableClass]
+  [StorableType("650DF07C-886D-48DF-B796-CE8C18471E40")]
   public sealed class SingleObjectiveIntegerVectorProgrammableProblem : SingleObjectiveProgrammableProblem<IntegerVectorEncoding, IntegerVector> {
 
     [StorableConstructor]
-    private SingleObjectiveIntegerVectorProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private SingleObjectiveIntegerVectorProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private SingleObjectiveIntegerVectorProgrammableProblem(SingleObjectiveIntegerVectorProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
 
@@ -84,9 +84,9 @@
   [Item("Real Vector Problem (single-objective)", "Represents a real vector single-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsSingleObjective, Priority = 102)]
-  [StorableClass]
+  [StorableType("FA01E098-D70B-4782-85E0-8DCF9D1F72D3")]
   public sealed class SingleObjectiveRealVectorProgrammableProblem : SingleObjectiveProgrammableProblem<RealVectorEncoding, RealVector> {
 
     [StorableConstructor]
-    private SingleObjectiveRealVectorProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private SingleObjectiveRealVectorProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private SingleObjectiveRealVectorProgrammableProblem(SingleObjectiveRealVectorProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
 
@@ -107,9 +107,9 @@
   [Item("Permutation Problem (single-objective)", "Represents a permutation single-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsSingleObjective, Priority = 103)]
-  [StorableClass]
+  [StorableType("51D851AD-8F12-4C00-A626-CDF785574C07")]
   public sealed class SingleObjectivePermutationProgrammableProblem : SingleObjectiveProgrammableProblem<PermutationEncoding, Permutation> {
 
     [StorableConstructor]
-    private SingleObjectivePermutationProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private SingleObjectivePermutationProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private SingleObjectivePermutationProgrammableProblem(SingleObjectivePermutationProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
 
@@ -130,9 +130,9 @@
   [Item("Symbolic Expression Tree Problem (single-objective)", "Represents a symbolic expression tree single-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsSingleObjective, Priority = 104)]
-  [StorableClass]
+  [StorableType("49EE7342-D54E-42D4-ADC1-0E79599385A2")]
   public sealed class SingleObjectiveSymbolicExpressionTreeProgrammableProblem : SingleObjectiveProgrammableProblem<SymbolicExpressionTreeEncoding, ISymbolicExpressionTree> {
 
     [StorableConstructor]
-    private SingleObjectiveSymbolicExpressionTreeProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private SingleObjectiveSymbolicExpressionTreeProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private SingleObjectiveSymbolicExpressionTreeProgrammableProblem(SingleObjectiveSymbolicExpressionTreeProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
     public SingleObjectiveSymbolicExpressionTreeProgrammableProblem()
@@ -152,9 +152,9 @@
   [Item("Linear Linkage Problem (single-objective)", "Represents a linear linkage single-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsSingleObjective, Priority = 105)]
-  [StorableClass]
+  [StorableType("C6D025AC-C09A-49F1-BB2C-F40A16687E95")]
   public sealed class SingleObjectiveLinearLinkageProgrammableProblem : SingleObjectiveProgrammableProblem<LinearLinkageEncoding, LinearLinkage> {
 
     [StorableConstructor]
-    private SingleObjectiveLinearLinkageProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private SingleObjectiveLinearLinkageProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private SingleObjectiveLinearLinkageProgrammableProblem(SingleObjectiveLinearLinkageProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
     public SingleObjectiveLinearLinkageProgrammableProblem()
@@ -174,9 +174,9 @@
   [Item("Combined Encoding Problem (single-objective)", "Represents a combined encoding single-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsSingleObjective, Priority = 1000)]
-  [StorableClass]
+  [StorableType("BF5186A9-8695-484D-888D-0DAE0F344AAD")]
   public sealed class SingleObjectiveCombinedEncodingProgrammableProblem : SingleObjectiveProgrammableProblem<CombinedEncoding, CombinedSolution> {
 
     [StorableConstructor]
-    private SingleObjectiveCombinedEncodingProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private SingleObjectiveCombinedEncodingProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private SingleObjectiveCombinedEncodingProgrammableProblem(SingleObjectiveCombinedEncodingProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
 
@@ -196,9 +196,9 @@
   [Item("Binary Vector Problem (multi-objective)", "Represents a binary vector multi-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsMultiObjective, Priority = 100)]
-  [StorableClass]
+  [StorableType("750F0CF5-2779-49A7-BC32-EA3C593B50DE")]
   public sealed class MultiObjectiveBinaryVectorProgrammableProblem : MultiObjectiveProgrammableProblem<BinaryVectorEncoding, BinaryVector> {
 
     [StorableConstructor]
-    private MultiObjectiveBinaryVectorProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private MultiObjectiveBinaryVectorProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private MultiObjectiveBinaryVectorProgrammableProblem(MultiObjectiveBinaryVectorProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
 
@@ -220,9 +220,9 @@
   [Item("Integer Vector Problem (multi-objective)", "Represents an integer vector multi-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsMultiObjective, Priority = 101)]
-  [StorableClass]
+  [StorableType("442F242E-29E6-416A-8CA3-C216300A1FA5")]
   public sealed class MultiObjectiveIntegerVectorProgrammableProblem : MultiObjectiveProgrammableProblem<IntegerVectorEncoding, IntegerVector> {
 
     [StorableConstructor]
-    private MultiObjectiveIntegerVectorProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private MultiObjectiveIntegerVectorProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private MultiObjectiveIntegerVectorProgrammableProblem(MultiObjectiveIntegerVectorProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
 
@@ -243,9 +243,9 @@
   [Item("Real Vector Problem (multi-objective)", "Represents a real vector multi-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsMultiObjective, Priority = 102)]
-  [StorableClass]
+  [StorableType("2DEFF24A-755A-4E22-8DD8-B791C0BCC832")]
   public sealed class MultiObjectiveRealVectorProgrammableProblem : MultiObjectiveProgrammableProblem<RealVectorEncoding, RealVector> {
 
     [StorableConstructor]
-    private MultiObjectiveRealVectorProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private MultiObjectiveRealVectorProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private MultiObjectiveRealVectorProgrammableProblem(MultiObjectiveRealVectorProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
 
@@ -266,9 +266,9 @@
   [Item("Permutation Problem (multi-objective)", "Represents a permutation multi-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsMultiObjective, Priority = 103)]
-  [StorableClass]
+  [StorableType("23FC641C-770B-49A2-AA3C-5862F4A55F94")]
   public sealed class MultiObjectivePermutationProgrammableProblem : MultiObjectiveProgrammableProblem<PermutationEncoding, Permutation> {
 
     [StorableConstructor]
-    private MultiObjectivePermutationProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private MultiObjectivePermutationProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private MultiObjectivePermutationProgrammableProblem(MultiObjectivePermutationProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
     public MultiObjectivePermutationProgrammableProblem()
@@ -288,9 +288,9 @@
   [Item("Symbolic Expression Tree Programmable Problem (multi-objective)", "Represents a symbolic expression tree multi-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsMultiObjective, Priority = 104)]
-  [StorableClass]
+  [StorableType("FAEA5ED6-EA8F-4EA2-B84C-7A1B4491292A")]
   public sealed class MultiObjectiveSymbolicExpressionTreeProgrammableProblem : MultiObjectiveProgrammableProblem<SymbolicExpressionTreeEncoding, ISymbolicExpressionTree> {
 
     [StorableConstructor]
-    private MultiObjectiveSymbolicExpressionTreeProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private MultiObjectiveSymbolicExpressionTreeProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private MultiObjectiveSymbolicExpressionTreeProgrammableProblem(MultiObjectiveSymbolicExpressionTreeProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
     public MultiObjectiveSymbolicExpressionTreeProgrammableProblem()
@@ -310,9 +310,9 @@
   [Item("Linear Linkage Programmable Problem (multi-objective)", "Represents a linear linkage multi-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsMultiObjective, Priority = 105)]
-  [StorableClass]
+  [StorableType("207E3110-4937-4A95-9331-39880739D7CF")]
   public sealed class MultiObjectiveLinearLinkageProgrammableProblem : MultiObjectiveProgrammableProblem<LinearLinkageEncoding, LinearLinkage> {
 
     [StorableConstructor]
-    private MultiObjectiveLinearLinkageProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private MultiObjectiveLinearLinkageProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private MultiObjectiveLinearLinkageProgrammableProblem(MultiObjectiveLinearLinkageProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
     public MultiObjectiveLinearLinkageProgrammableProblem()
@@ -332,9 +332,9 @@
   [Item("Combined Encoding Problem (multi-objective)", "Represents a combined encoding multi-objective problem that can be programmed with a script.")]
   [Creatable(CreatableAttribute.Categories.ProgrammableProblemsMultiObjective, Priority = 1000)]
-  [StorableClass]
+  [StorableType("1EE16E10-63DD-41F1-8739-ACE7437D551B")]
   public sealed class MultiObjectiveCombinedEncodingProgrammableProblem : MultiObjectiveProgrammableProblem<CombinedEncoding, CombinedSolution> {
 
     [StorableConstructor]
-    private MultiObjectiveCombinedEncodingProgrammableProblem(bool deserializing) : base(deserializing) { }
+    private MultiObjectiveCombinedEncodingProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     private MultiObjectiveCombinedEncodingProgrammableProblem(MultiObjectiveCombinedEncodingProgrammableProblem original, Cloner cloner) : base(original, cloner) { }
 
Index: /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/SingleObjectiveProgrammableProblem.cs
===================================================================
--- /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/SingleObjectiveProgrammableProblem.cs	(revision 16724)
+++ /branches/2521_ProblemRefactoring/HeuristicLab.Problems.Programmable/3.3/SingleObjectiveProgrammableProblem.cs	(revision 16725)
@@ -22,4 +22,5 @@
 using System.Collections.Generic;
 using System.Drawing;
+using HEAL.Attic;
 using HeuristicLab.Analysis;
 using HeuristicLab.Common;
@@ -29,5 +30,4 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
-using HEAL.Attic;
 using HeuristicLab.Scripting;
 
@@ -72,5 +72,5 @@
 
     [StorableConstructor]
-    private SingleObjectiveProgrammableProblem(StorableConstructorFlag _) : base(_) { }
+    protected SingleObjectiveProgrammableProblem(StorableConstructorFlag _) : base(_) { }
     public SingleObjectiveProgrammableProblem()
       : base() {
