Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/BoolArray.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/BoolArray.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/BoolArray.cs	(revision 16462)
@@ -23,12 +23,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("BoolArray", "Represents an array of boolean values.")]
-  [StorableClass]
+  [StorableType("CBDDC242-3F94-4CA0-B2A8-E3B10F07DFB8")]
   public class BoolArray : StringConvertibleArray<bool> {
     [StorableConstructor]
-    protected BoolArray(bool deserializing) : base(deserializing) { }
+    protected BoolArray(StorableConstructorFlag _) : base(_) { }
     protected BoolArray(BoolArray original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/BoolMatrix.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/BoolMatrix.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/BoolMatrix.cs	(revision 16462)
@@ -24,12 +24,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("BoolMatrix", "Represents a matrix of boolean values.")]
-  [StorableClass]
+  [StorableType("A6456658-0B85-4C63-A6DA-FA82EB861B70")]
   public class BoolMatrix : ValueTypeMatrix<bool>, IStringConvertibleMatrix {
     [StorableConstructor]
-    protected BoolMatrix(bool deserializing) : base(deserializing) { }
+    protected BoolMatrix(StorableConstructorFlag _) : base(_) { }
     protected BoolMatrix(BoolMatrix original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/BoolValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/BoolValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/BoolValue.cs	(revision 16462)
@@ -25,9 +25,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("BoolValue", "Represents a boolean value.")]
-  [StorableClass]
+  [StorableType("EC318C04-84C2-4DDA-881D-B2890093162E")]
   public class BoolValue : ValueTypeValue<bool>, IComparable, IStringConvertibleValue {
     public static new Image StaticItemImage {
@@ -35,15 +35,11 @@
     }
 
+    [StorableConstructor]
+    public BoolValue(StorableConstructorFlag _) : base(_) { }
     protected BoolValue(BoolValue original, Cloner cloner)
       : base(original, cloner) {
     }
     public BoolValue() : base() { }
-    [StorableConstructor]
-    public BoolValue(bool value)
-      : base(value) {
-      //mkommend: Be aware that the base call refers to the storable ctor => the value is set explicitly in the ctor body.
-      //          This should not affect the persistence, because first the ctor is called and afterwards the values are set by reflection.
-      this.value = value;
-    }
+    public BoolValue(bool value) : base(value) { }
 
     public override IDeepCloneable Clone(Cloner cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Comparison.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Comparison.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Comparison.cs	(revision 16462)
@@ -24,9 +24,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("Comparison", "Represents a comparison.")]
-  [StorableClass]
+  [StorableType("2753AB02-748C-47C8-8D55-A1C43A57DF7D")]
   public class Comparison : ValueTypeValue<ComparisonType>, IComparable {
     public static new Image StaticItemImage {
@@ -35,5 +35,5 @@
 
     [StorableConstructor]
-    protected Comparison(bool deserializing) : base(deserializing) { }
+    protected Comparison(StorableConstructorFlag _) : base(_) { }
     protected Comparison(Comparison original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DateTimeValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DateTimeValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DateTimeValue.cs	(revision 16462)
@@ -23,12 +23,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("DateTimeValue", "Represents a date and time value.")]
-  [StorableClass]
+  [StorableType("1D9B8F20-F460-481F-BE4A-4A8616DA14B5")]
   public class DateTimeValue : ValueTypeValue<DateTime>, IComparable, IStringConvertibleValue {
     [StorableConstructor]
-    protected DateTimeValue(bool deserializing) : base(deserializing) { }
+    protected DateTimeValue(StorableConstructorFlag _) : base(_) { }
     protected DateTimeValue(DateTimeValue original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleArray.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleArray.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleArray.cs	(revision 16462)
@@ -23,12 +23,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("DoubleArray", "Represents an array of double values.")]
-  [StorableClass]
+  [StorableType("BFB2A7A4-A79B-462D-99FE-488484891361")]
   public class DoubleArray : StringConvertibleArray<double> {
     [StorableConstructor]
-    protected DoubleArray(bool deserializing) : base(deserializing) { }
+    protected DoubleArray(StorableConstructorFlag _) : base(_) { }
     protected DoubleArray(DoubleArray original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleMatrix.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleMatrix.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleMatrix.cs	(revision 16462)
@@ -24,12 +24,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("DoubleMatrix", "Represents a matrix of double values.")]
-  [StorableClass]
+  [StorableType("EFF3CA0C-100C-4DD4-9EFF-2EF3CB0DE793")]
   public class DoubleMatrix : ValueTypeMatrix<double>, IStringConvertibleMatrix {
     [StorableConstructor]
-    protected DoubleMatrix(bool deserializing) : base(deserializing) { }
+    protected DoubleMatrix(StorableConstructorFlag _) : base(_) { }
     protected DoubleMatrix(DoubleMatrix original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleRange.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleRange.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleRange.cs	(revision 16462)
@@ -23,8 +23,8 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
-  [StorableClass]
+  [StorableType("884665C1-FE7A-4022-8A7A-8ECFF7358146")]
   [Item("DoubleRange", "Represents a range of values betweent start and end.")]
   public class DoubleRange : StringConvertibleValueTuple<DoubleValue, DoubleValue> {
@@ -43,5 +43,5 @@
 
     [StorableConstructor]
-    protected DoubleRange(bool deserializing) : base(deserializing) { }
+    protected DoubleRange(StorableConstructorFlag _) : base(_) { }
     protected DoubleRange(DoubleRange original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/DoubleValue.cs	(revision 16462)
@@ -25,9 +25,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("DoubleValue", "Represents a double value.")]
-  [StorableClass]
+  [StorableType("E9F7C52B-4D05-4C3A-BA2A-FC4C55B4388A")]
   public class DoubleValue : ValueTypeValue<double>, IComparable, IStringConvertibleValue {
     public static new Image StaticItemImage {
@@ -36,5 +36,5 @@
 
     [StorableConstructor]
-    protected DoubleValue(bool deserializing) : base(deserializing) { }
+    protected DoubleValue(StorableConstructorFlag _) : base(_) { }
     protected DoubleValue(DoubleValue original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/EnumValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/EnumValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/EnumValue.cs	(revision 16462)
@@ -24,9 +24,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("EnumValue", "An abstract base class for representing values of enum types.")]
-  [StorableClass]
+  [StorableType("1D2E4514-1B3B-4498-9A1F-3D90C69635CA")]
   public sealed class EnumValue<T> : ValueTypeValue<T>, IComparable<EnumValue<T>> where T : struct, IComparable {
     public static new Image StaticItemImage {
@@ -49,5 +49,5 @@
 
     [StorableConstructor]
-    private EnumValue(bool deserializing) : base(deserializing) { }
+    private EnumValue(StorableConstructorFlag _) : base(_) { }
     private EnumValue(EnumValue<T> original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj	(revision 16462)
@@ -111,5 +111,5 @@
       <HintPath>..\..\packages\Google.Protobuf.3.6.1\lib\net45\Google.Protobuf.dll</HintPath>
     </Reference>
-    <Reference Include="HEAL.Fossil, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+    <Reference Include="HEAL.Fossil, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <HintPath>..\..\packages\HEAL.Fossil.1.0.0\lib\netstandard2.0\HEAL.Fossil.dll</HintPath>
     </Reference>
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntArray.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntArray.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntArray.cs	(revision 16462)
@@ -23,12 +23,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("IntArray", "Represents an array of integer values.")]
-  [StorableClass]
+  [StorableType("B9E18852-D23D-4BF7-8971-04572EB0C2A2")]
   public class IntArray : StringConvertibleArray<int> {
     [StorableConstructor]
-    protected IntArray(bool deserializing) : base(deserializing) { }
+    protected IntArray(StorableConstructorFlag _) : base(_) { }
     protected IntArray(IntArray original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntMatrix.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntMatrix.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntMatrix.cs	(revision 16462)
@@ -24,12 +24,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("IntMatrix", "Represents a matrix of integer values.")]
-  [StorableClass]
+  [StorableType("DF97EDF8-EF27-4FA2-988A-1C7FA05C4525")]
   public class IntMatrix : ValueTypeMatrix<int>, IStringConvertibleMatrix {
     [StorableConstructor]
-    protected IntMatrix(bool deserializing) : base(deserializing) { }
+    protected IntMatrix(StorableConstructorFlag _) : base(_) { }
     protected IntMatrix(IntMatrix original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntRange.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntRange.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntRange.cs	(revision 16462)
@@ -23,8 +23,8 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
-  [StorableClass]
+  [StorableType("99F14850-864C-46FE-A048-04E3DA1D4B02")]
   [Item("IntRange", "Represents a range of values betweent start and end.")]
   public class IntRange : StringConvertibleValueTuple<IntValue, IntValue> {
@@ -43,5 +43,5 @@
 
     [StorableConstructor]
-    protected IntRange(bool deserializing) : base(deserializing) { }
+    protected IntRange(StorableConstructorFlag _) : base(_) { }
     protected IntRange(IntRange original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/IntValue.cs	(revision 16462)
@@ -25,9 +25,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("IntValue", "Represents an integer value.")]
-  [StorableClass]
+  [StorableType("1C4F4173-5D67-44CA-8711-53437BB9F7C4")]
   public class IntValue : ValueTypeValue<int>, IComparable, IStringConvertibleValue {
     public static new Image StaticItemImage {
@@ -36,5 +36,5 @@
 
     [StorableConstructor]
-    protected IntValue(bool deserializing) : base(deserializing) { }
+    protected IntValue(StorableConstructorFlag _) : base(_) { }
     protected IntValue(IntValue original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/DirectoryValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/DirectoryValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/DirectoryValue.cs	(revision 16462)
@@ -23,12 +23,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("DirectoryValue", "Represents the path to a directory.")]
-  [StorableClass]
+  [StorableType("AFB5A3C6-7FC8-45C6-A3B9-F3B3414A4CAB")]
   public class DirectoryValue : PathValue {
     [StorableConstructor]
-    protected DirectoryValue(bool deserializing) : base(deserializing) { }
+    protected DirectoryValue(StorableConstructorFlag _) : base(_) { }
     protected DirectoryValue(DirectoryValue original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/FileValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/FileValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/FileValue.cs	(revision 16462)
@@ -23,9 +23,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("FileValue", "Represents the path to a file.")]
-  [StorableClass]
+  [StorableType("55D686E9-29B7-41C2-8693-D1CA6E792765")]
   public class FileValue : PathValue {
     [Storable]
@@ -41,5 +41,5 @@
 
     [StorableConstructor]
-    protected FileValue(bool deserializing) : base(deserializing) { }
+    protected FileValue(StorableConstructorFlag _) : base(_) { }
     protected FileValue(FileValue original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/PathValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/PathValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/PathValue.cs	(revision 16462)
@@ -23,9 +23,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("PathValue", "Represents a path.")]
-  [StorableClass]
+  [StorableType("293B9A98-76C4-47E1-900D-67B8480BCBD6")]
   public abstract class PathValue : Item {
 
@@ -46,5 +46,5 @@
 
     [StorableConstructor]
-    protected PathValue(bool deserializing) : base(deserializing) { }
+    protected PathValue(StorableConstructorFlag _) : base(_) { }
     protected PathValue(PathValue original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/TextFileValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/TextFileValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/Path Types/TextFileValue.cs	(revision 16462)
@@ -22,12 +22,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("TextFile", "Represents the content and path to a text file.")]
-  [StorableClass]
+  [StorableType("19F5012B-6139-4113-A015-1C920A59E5AF")]
   public class TextFileValue : FileValue {
     [StorableConstructor]
-    protected TextFileValue(bool deserializing) : base(deserializing) { }
+    protected TextFileValue(StorableConstructorFlag _) : base(_) { }
     protected TextFileValue(TextFileValue original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/PercentArray.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/PercentArray.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/PercentArray.cs	(revision 16462)
@@ -23,12 +23,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("PercentArray", "Represents an array of double values in percent.")]
-  [StorableClass]
+  [StorableType("8ED7F07C-1DE7-4782-90C0-50395627F8A0")]
   public class PercentArray : DoubleArray {
     [StorableConstructor]
-    protected PercentArray(bool deserializing) : base(deserializing) { }
+    protected PercentArray(StorableConstructorFlag _) : base(_) { }
     protected PercentArray(PercentArray original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/PercentMatrix.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/PercentMatrix.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/PercentMatrix.cs	(revision 16462)
@@ -24,12 +24,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("PercentMatrix", "Represents a matrix of double values in percent.")]
-  [StorableClass]
+  [StorableType("A140221B-1990-46FF-BA82-630DF48AB1B7")]
   public class PercentMatrix : DoubleMatrix {
     [StorableConstructor]
-    protected PercentMatrix(bool deserializing) : base(deserializing) { }
+    protected PercentMatrix(StorableConstructorFlag _) : base(_) { }
     protected PercentMatrix(PercentMatrix original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/PercentValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/PercentValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/PercentValue.cs	(revision 16462)
@@ -23,9 +23,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("PercentValue", "Represents a double value in percent.")]
-  [StorableClass]
+  [StorableType("FC4406A2-54A1-4D9D-AE6A-AB98895ECE64")]
   public class PercentValue : DoubleValue {
     [Storable(DefaultValue = false)]
@@ -45,5 +45,5 @@
 
     [StorableConstructor]
-    protected PercentValue(bool deserializing) : base(deserializing) { }
+    protected PercentValue(StorableConstructorFlag _) : base(_) { }
     protected PercentValue(PercentValue original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringArray.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringArray.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringArray.cs	(revision 16462)
@@ -28,9 +28,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("StringArray", "Represents an array of strings.")]
-  [StorableClass]
+  [StorableType("E226B187-2D74-4112-A91E-830B0408D1BF")]
   public class StringArray : Item, IEnumerable<string>, IStringConvertibleArray {
     private const int maximumToStringLength = 100;
@@ -109,5 +109,5 @@
 
     [StorableConstructor]
-    protected StringArray(bool deserializing) : base(deserializing) { }
+    protected StringArray(StorableConstructorFlag _) : base(_) { }
     protected StringArray(StringArray original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringConvertibleArray.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringConvertibleArray.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringConvertibleArray.cs	(revision 16462)
@@ -24,12 +24,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("StringConvertibleArray", "Represents an array of string convertible values.")]
-  [StorableClass]
+  [StorableType("68FCA40B-4ACF-4D7A-B4FA-67DBA481125E")]
   public abstract class StringConvertibleArray<T> : ValueTypeArray<T>, IStringConvertibleArray where T : struct {
     [StorableConstructor]
-    protected StringConvertibleArray(bool deserializing) : base(deserializing) { }
+    protected StringConvertibleArray(StorableConstructorFlag _) : base(_) { }
     protected StringConvertibleArray(StringConvertibleArray<T> original, Cloner cloner)
       : base(original, cloner) { }
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringConvertibleValueTuple.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringConvertibleValueTuple.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringConvertibleValueTuple.cs	(revision 16462)
@@ -24,8 +24,8 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
-  [StorableClass]
+  [StorableType("06A7697C-2C25-49AF-95A2-DDB14D2F7B81")]
   [Item("StringConvertibleValueTuple<,>", "A generic abstract base class for representing multiple values of a string convertible value.")]
   public abstract class StringConvertibleValueTuple<T, U> : Item, IStringConvertibleValueTuple
@@ -51,6 +51,5 @@
 
     [StorableConstructor]
-    protected StringConvertibleValueTuple(bool deserializing)
-      : base(deserializing) {
+    protected StringConvertibleValueTuple(StorableConstructorFlag _) : base(_) {
     }
     protected StringConvertibleValueTuple(StringConvertibleValueTuple<T, U> original, Cloner cloner)
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringMatrix.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringMatrix.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringMatrix.cs	(revision 16462)
@@ -28,9 +28,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("StringMatrix", "Represents a matrix of strings.")]
-  [StorableClass]
+  [StorableType("0BFE5727-D2CF-418C-94BE-A8A0BBA195D8")]
   public class StringMatrix : Item, IEnumerable<string>, IStringConvertibleMatrix {
     private const int maximumToStringLength = 100;
@@ -143,5 +143,5 @@
 
     [StorableConstructor]
-    protected StringMatrix(bool deserializing) : base(deserializing) { }
+    protected StringMatrix(StorableConstructorFlag _) : base(_) { }
     protected StringMatrix(StringMatrix original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/StringValue.cs	(revision 16462)
@@ -24,9 +24,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("StringValue", "Represents a string.")]
-  [StorableClass]
+  [StorableType("1091C8E5-4480-447C-8EB3-AA260C59976D")]
   public class StringValue : Item, IComparable, IStringConvertibleValue {
     public static new Image StaticItemImage {
@@ -56,5 +56,5 @@
 
     [StorableConstructor]
-    protected StringValue(bool deserializing) : base(deserializing) { }
+    protected StringValue(StorableConstructorFlag _) : base(_) { }
     protected StringValue(StringValue original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/TimeSpanValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/TimeSpanValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/TimeSpanValue.cs	(revision 16462)
@@ -25,12 +25,12 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("TimeSpanValue", "Represents a duration of time.")]
-  [StorableClass]
+  [StorableType("03DA3BC6-4041-4444-ACF1-AEEAE2EF6AB5")]
   public class TimeSpanValue : ValueTypeValue<TimeSpan>, IComparable, IStringConvertibleValue {
     [StorableConstructor]
-    protected TimeSpanValue(bool deserializing) : base(deserializing) { }
+    protected TimeSpanValue(StorableConstructorFlag _) : base(_) { }
     protected TimeSpanValue(TimeSpanValue original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/TriangularMatrix.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/TriangularMatrix.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/TriangularMatrix.cs	(revision 16462)
@@ -25,9 +25,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("TriangularMatrix", "Represents a lower triangular matrix.")]
-  [StorableClass]
+  [StorableType("5C09A4FC-887E-4C40-8926-81325C09FA67")]
   public class TriangularMatrix<T> : ValueTypeMatrix<T>, IStringConvertibleMatrix where T : struct {
     [Storable]
@@ -48,5 +48,5 @@
 
     [StorableConstructor]
-    protected TriangularMatrix(bool deserializing) : base(deserializing) { }
+    protected TriangularMatrix(StorableConstructorFlag _) : base(_) { }
 
     protected TriangularMatrix(TriangularMatrix<T> original, Cloner cloner) : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/ValueTypeArray.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/ValueTypeArray.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/ValueTypeArray.cs	(revision 16462)
@@ -28,9 +28,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("ValueTypeArray", "An abstract base class for representing arrays of value types.")]
-  [StorableClass]
+  [StorableType("6A05E421-E015-44A8-959F-5711CF9400A9")]
   public abstract class ValueTypeArray<T> : Item, IValueTypeArray<T> where T : struct {
     private const int maximumToStringLength = 100;
@@ -112,5 +112,5 @@
 
     [StorableConstructor]
-    protected ValueTypeArray(bool deserializing) : base(deserializing) { }
+    protected ValueTypeArray(StorableConstructorFlag _) : base(_) { }
     protected ValueTypeArray(ValueTypeArray<T> original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/ValueTypeMatrix.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/ValueTypeMatrix.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/ValueTypeMatrix.cs	(revision 16462)
@@ -28,9 +28,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("ValueTypeMatrix", "An abstract base class for representing matrices of value types.")]
-  [StorableClass]
+  [StorableType("4EDE6858-4628-4F21-8F27-A45C59C2DE36")]
   public abstract class ValueTypeMatrix<T> : Item, IEnumerable<T> where T : struct {
     private const int maximumToStringLength = 100;
@@ -141,5 +141,5 @@
 
     [StorableConstructor]
-    protected ValueTypeMatrix(bool deserializing) : base(deserializing) { }
+    protected ValueTypeMatrix(StorableConstructorFlag _) : base(_) { }
     protected ValueTypeMatrix(ValueTypeMatrix<T> original, Cloner cloner)
       : base(original, cloner) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/ValueTypeValue.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/ValueTypeValue.cs	(revision 16454)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Data/3.3/ValueTypeValue.cs	(revision 16462)
@@ -24,9 +24,9 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Data {
   [Item("ValueTypeValue", "An abstract base class for representing values of value types.")]
-  [StorableClass]
+  [StorableType("A78FF29D-A796-463F-A93F-2528A382D99E")]
   public abstract class ValueTypeValue<T> : Item where T : struct {
     public static new Image StaticItemImage {
@@ -54,5 +54,5 @@
 
     [StorableConstructor]
-    protected ValueTypeValue(bool deserializing) : base(deserializing) { }
+    protected ValueTypeValue(StorableConstructorFlag _) : base(_) { }
     protected ValueTypeValue(ValueTypeValue<T> original, Cloner cloner)
       : base(original, cloner) {
