Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Auxiliary/TypeLoader.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Auxiliary/TypeLoader.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Auxiliary/TypeLoader.cs	(revision 16462)
@@ -23,5 +23,5 @@
 using System.Collections.Generic;
 using System.Reflection;
-using HeuristicLab.Persistence.Core;
+using HEAL.Fossil;
 using HeuristicLab.Tracing;
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Auxiliary/TypeName.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Auxiliary/TypeName.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Auxiliary/TypeName.cs	(revision 16462)
@@ -24,5 +24,5 @@
 using System.Linq;
 using System.Text;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Persistence.Auxiliary {
@@ -104,5 +104,5 @@
 
     [StorableConstructor]
-    protected TypeName(bool deserializing) { }
+    protected TypeName(StorableConstructorFlag _) { }
     /// <summary>
     /// Initializes a new instance of the <see cref="TypeName"/> class.
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/Configuration.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/Configuration.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/Configuration.cs	(revision 16462)
@@ -22,5 +22,5 @@
 using System;
 using System.Collections.Generic;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -50,11 +50,14 @@
 
     [StorableConstructor]
-    protected Configuration(bool isDeserializing) {
+    protected Configuration(StorableConstructorFlag _) {
       compositeSerializerCache = new Dictionary<Type, ICompositeSerializer>();
-      if (isDeserializing)
-        return;
+    }
+
+    public Configuration() {
+      compositeSerializerCache = new Dictionary<Type, ICompositeSerializer>();
       primitiveSerializers = new Dictionary<Type, IPrimitiveSerializer>();
       compositeSerializers = new List<ICompositeSerializer>();
     }
+
 
     /// <summary>
@@ -67,5 +70,5 @@
         IEnumerable<IPrimitiveSerializer> primitiveSerializers,
         IEnumerable<ICompositeSerializer> compositeSerializers)
-      : this(false) {
+      : this() {
       this.Format = format;
       this.compositeSerializers.AddRange(compositeSerializers);
@@ -131,5 +134,5 @@
     /// <returns>A new <see cref="Configuration"/></returns>
     public Configuration Copy() {
-      var config = new Configuration(false);
+      var config = new Configuration();
       config.Format = Format;
       foreach (var ps in primitiveSerializers)
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 16462)
@@ -26,4 +26,5 @@
 using System.Reflection;
 using System.Text;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Persistence.Interfaces;
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/DataMemberAccessor.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/DataMemberAccessor.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/DataMemberAccessor.cs	(revision 16462)
@@ -23,4 +23,5 @@
 using System.Reflection;
 using System.Reflection.Emit;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Persistence.Core {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/Deserializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/Deserializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/Deserializer.cs	(revision 16462)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core.Tokens;
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/FormatBase.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/FormatBase.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/FormatBase.cs	(revision 16462)
@@ -21,5 +21,5 @@
 
 using System;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Persistence.Interfaces {
@@ -44,5 +44,5 @@
 
     [StorableConstructor]
-    protected FormatBase(bool deserializing) { }
+    protected FormatBase(StorableConstructorFlag _) { }
     protected FormatBase() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/PersistenceException.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/PersistenceException.cs	(revision 16453)
+++ 	(revision )
@@ -1,90 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2019 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 System;
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-using System.Text;
-
-namespace HeuristicLab.Persistence.Core {
-
-  /// <summary>
-  /// Exception thrown by components inside the persistence framework.
-  /// </summary>
-  [Serializable]
-  public class PersistenceException : Exception {
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="PersistenceException"/> class.
-    /// </summary>
-    public PersistenceException() : base() { }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="PersistenceException"/> class.
-    /// </summary>
-    /// <param name="message">The message.</param>
-    public PersistenceException(string message) : base(message) { }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="PersistenceException"/> class.
-    /// </summary>
-    /// <param name="message">The message.</param>
-    /// <param name="innerException">The inner exception.</param>
-    public PersistenceException(string message, Exception innerException) :
-      base(message, innerException) { }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="PersistenceException"/> class.
-    /// </summary>
-    /// <param name="message">The message.</param>
-    /// <param name="innerExceptions">The inner exceptions.</param>
-    public PersistenceException(string message, IEnumerable<Exception> innerExceptions)
-      : base(message) {
-      int i = 0;
-      foreach (var x in innerExceptions) {
-        i += 1;
-        this.Data.Add("Inner Exception " + i, x);
-      }
-    }
-
-    protected PersistenceException(SerializationInfo info, StreamingContext context) : base(info, context) { }
-
-    /// <summary>
-    /// Returns a <see cref="System.String"/> that represents this instance.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="System.String"/> that represents this instance.
-    /// </returns>
-    /// <PermissionSet>
-    /// 	<IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" PathDiscovery="*AllFiles*"/>
-    /// </PermissionSet>
-    public override string ToString() {
-      var sb = new StringBuilder()
-        .Append(base.ToString())
-        .Append('\n');
-      foreach (Exception x in Data.Values) {
-        sb.Append(x.ToString()).Append('\n');
-      }
-      return sb.ToString();
-    }
-  }
-
-}
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/PrimitiveSerializerBase.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/PrimitiveSerializerBase.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/PrimitiveSerializerBase.cs	(revision 16462)
@@ -22,5 +22,5 @@
 using System;
 using System.Text;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Persistence.Interfaces {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/Serializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/Serializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Core/Serializer.cs	(revision 16462)
@@ -25,4 +25,5 @@
 using System.Reflection;
 using System.Text;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core.Tokens;
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ArraySerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ArraySerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ArraySerializer.cs	(revision 16462)
@@ -23,5 +23,5 @@
 using System.Collections.Generic;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -32,5 +32,5 @@
 
     [StorableConstructor]
-    private ArraySerializer(bool deserializing) { }
+    private ArraySerializer(StorableConstructorFlag _) { }
     public ArraySerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/CompactNumberArray2StringSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/CompactNumberArray2StringSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/CompactNumberArray2StringSerializer.cs	(revision 16462)
@@ -26,5 +26,5 @@
 using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -82,5 +82,5 @@
 
     [StorableConstructor]
-    private CompactNumberArray2StringSerializer(bool deserializing) { }
+    private CompactNumberArray2StringSerializer(StorableConstructorFlag _) { }
     public CompactNumberArray2StringSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ConcreteDictionarySerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ConcreteDictionarySerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ConcreteDictionarySerializer.cs	(revision 16462)
@@ -25,5 +25,5 @@
 using System.Linq;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -34,5 +34,5 @@
 
     [StorableConstructor]
-    private ConcreteDictionarySerializer(bool deserializing) { }
+    private ConcreteDictionarySerializer(StorableConstructorFlag _) { }
     public ConcreteDictionarySerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/DictionarySerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/DictionarySerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/DictionarySerializer.cs	(revision 16462)
@@ -25,5 +25,5 @@
 using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -34,5 +34,5 @@
 
     [StorableConstructor]
-    private DictionarySerializer(bool deserializing) { }
+    private DictionarySerializer(StorableConstructorFlag _) { }
     public DictionarySerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumSerializer.cs	(revision 16462)
@@ -23,5 +23,5 @@
 using System.Collections.Generic;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -32,5 +32,5 @@
 
     [StorableConstructor]
-    private EnumSerializer(bool deserializing) { }
+    private EnumSerializer(StorableConstructorFlag _) { }
     public EnumSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumerableSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumerableSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumerableSerializer.cs	(revision 16462)
@@ -26,5 +26,5 @@
 using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -35,5 +35,5 @@
 
     [StorableConstructor]
-    private EnumerableSerializer(bool deserializing) { }
+    private EnumerableSerializer(StorableConstructorFlag _) { }
     public EnumerableSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/HashSetSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/HashSetSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/HashSetSerializer.cs	(revision 16462)
@@ -26,5 +26,5 @@
 using System.Reflection;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -35,5 +35,5 @@
 
     [StorableConstructor]
-    private HashSetSerializer(bool deserializing) { }
+    private HashSetSerializer(StorableConstructorFlag _) { }
     public HashSetSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/KeyValuePairSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/KeyValuePairSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/KeyValuePairSerializer.cs	(revision 16462)
@@ -25,5 +25,5 @@
 using System.Reflection;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -34,5 +34,5 @@
 
     [StorableConstructor]
-    private KeyValuePairSerializer(bool deserializing) { }
+    private KeyValuePairSerializer(StorableConstructorFlag _) { }
     public KeyValuePairSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Number2StringSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Number2StringSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Number2StringSerializer.cs	(revision 16462)
@@ -25,5 +25,5 @@
 using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.Persistence.Default.Xml.Primitive;
@@ -44,5 +44,5 @@
 
     [StorableConstructor]
-    private Number2StringSerializer(bool deserializing) { }
+    private Number2StringSerializer(StorableConstructorFlag _) { }
     public Number2StringSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs	(revision 16462)
@@ -26,5 +26,5 @@
 using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -35,5 +35,5 @@
 
     [StorableConstructor]
-    private NumberEnumerable2StringSerializer(bool deserializing) { }
+    private NumberEnumerable2StringSerializer(StorableConstructorFlag _) { }
     public NumberEnumerable2StringSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/QueueSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/QueueSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/QueueSerializer.cs	(revision 16462)
@@ -25,5 +25,5 @@
 using System.Reflection;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -34,5 +34,5 @@
 
     [StorableConstructor]
-    private QueueSerializer(bool deserializing) { }
+    private QueueSerializer(StorableConstructorFlag _) { }
     public QueueSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StackSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StackSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StackSerializer.cs	(revision 16462)
@@ -25,5 +25,5 @@
 using System.Reflection;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -34,5 +34,5 @@
 
     [StorableConstructor]
-    private StackSerializer(bool deserializing) { }
+    private StackSerializer(StorableConstructorFlag _) { }
     public StackSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableAttribute.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableAttribute.cs	(revision 16453)
+++ 	(revision )
@@ -1,88 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2019 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 System;
-using System.Text;
-
-namespace HeuristicLab.Persistence.Default.CompositeSerializers.Storable {
-
-
-  /// <summary>
-  /// Mark the member of a class to be considered by the <c>StorableSerializer</c>.
-  /// The class must be marked as <c>[StorableClass]</c> and the
-  /// <c>StorableClassType</c> should be set to <c>MarkedOnly</c> for
-  /// this attribute to kick in.
-  /// </summary>
-  [AttributeUsage(
-    AttributeTargets.Field | AttributeTargets.Property,
-    AllowMultiple = false,
-    Inherited = false)]
-  public class StorableAttribute : Attribute {
-
-    /// <summary>
-    /// An optional name for this member that will be used during serialization.
-    /// This allows to rename a field/property in code but still be able to read
-    /// the old serialized format.
-    /// </summary>
-    /// <value>The name.</value>
-    public string Name { get; set; }
-
-
-    /// <summary>
-    /// A default value in case the field/property was not present or not serialized
-    /// in a previous version of the class and could therefore be absent during
-    /// deserialization.
-    /// </summary>
-    /// <value>The default value.</value>
-    public object DefaultValue { get; set; }
-
-    /// <summary>
-    /// Allow storable attribute on properties with only a getter or a setter. These
-    /// properties will then by either only serialized but not deserialized or only
-    /// deserialized (if stored) but not serialized again.
-    /// </summary>
-    public bool AllowOneWay { get; set; }
-
-    /// <summary>
-    /// Returns a <see cref="System.String"/> that represents this instance.
-    /// </summary>
-    /// <returns>
-    /// A <see cref="System.String"/> that represents this instance.
-    /// </returns>
-    public override string ToString() {
-      StringBuilder sb = new StringBuilder();
-      sb.Append("[Storable");
-      if (Name != null || DefaultValue != null)
-        sb.Append('(');
-      if (Name != null) {
-        sb.Append("Name = \"").Append(Name).Append("\"");
-        if (DefaultValue != null)
-          sb.Append(", ");
-      }
-      if (DefaultValue != null)
-        sb.Append("DefaultValue = \"").Append(DefaultValue).Append("\"");
-      if (Name != null || DefaultValue != null)
-        sb.Append(')');
-      sb.Append(']');
-      return sb.ToString();
-    }
-  }
-}
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableClassAttribute.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableClassAttribute.cs	(revision 16453)
+++ 	(revision )
@@ -1,65 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2019 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 System;
-
-namespace HeuristicLab.Persistence.Default.CompositeSerializers.Storable {
-
-  /// <summary>
-  /// Mark a class to be considered by the <c>StorableSerializer</c>.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
-  public sealed class StorableClassAttribute : Attribute {
-
-
-    /// <summary>
-    /// Specify how members are selected for serialization.
-    /// </summary>
-    public StorableClassType Type { get; private set; }
-
-    /// <summary>
-    /// Mark a class to be serialize by the <c>StorableSerizlier</c>
-    /// </summary>
-    /// <param name="type">The storable class type.</param>
-    public StorableClassAttribute(StorableClassType type) {
-      Type = type;
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the <see cref="StorableClassAttribute"/> class.
-    /// The default value for <see cref="StorableClassType"/> is
-    /// <see cref="StorableClassType.MarkedOnly"/>.
-    /// </summary>
-    public StorableClassAttribute() { }
-
-    /// <summary>
-    ///  Checks if the <see cref="StorableClassAttribute"/> is present on a type.
-    /// </summary>
-    /// <param name="type">The type which should be checked for the <see cref="StorableClassAttribute"/></param>
-    /// <returns></returns>
-    public static bool IsStorableClass(Type type) {
-      object[] attribs = type.GetCustomAttributes(typeof(StorableClassAttribute), false);
-      return attribs.Length > 0;
-    }
-
-  }
-}
-
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableClassType.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableClassType.cs	(revision 16453)
+++ 	(revision )
@@ -1,62 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2019 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
-
-
-namespace HeuristicLab.Persistence.Default.CompositeSerializers.Storable {
-
-  /// <summary>
-  /// Specifies which memebrs are selected for serialization by the StorableSerializer
-  /// </summary>
-  public enum StorableClassType {
-
-    /// <summary>
-    /// Serialize only fields and properties that have been marked
-    /// with the [Storable] attribute. This is the default value.
-    /// </summary>
-    MarkedOnly,
-
-    /// <summary>
-    /// Serialize all fields but ignore the 
-    /// [Storable] attribute on properties.
-    /// 
-    /// This does not include generated backing fields
-    /// for automatic properties.
-    /// </summary>    
-    AllFields,
-
-    /// <summary>
-    /// Serialize all properties but ignore the
-    /// [Storable] attribute on fields.
-    /// </summary>    
-    AllProperties,
-
-    /// <summary>
-    /// Serialize all fields and all properties
-    /// regardless of the [Storable] attribute.
-    /// 
-    /// This does not include generated backing fields
-    /// for automatic properties, but uses the property
-    /// accessors instead.
-    /// </summary>    
-    AllFieldsAndAllProperties
-  };
-}
-
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableConstructorAttribute.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableConstructorAttribute.cs	(revision 16453)
+++ 	(revision )
@@ -1,37 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2019 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 System;
-
-namespace HeuristicLab.Persistence.Default.CompositeSerializers.Storable {
-
-
-  /// <summary>
-  /// Indicate that this constructor should be used instead of the default constructor
-  /// when the <c>StorableSerializer</c> instantiates this class during
-  /// deserialization.
-  /// 
-  /// The constructor must take exactly one <c>bool</c> argument that will be
-  /// set to <c>true</c> during deserialization.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Constructor, Inherited = false, AllowMultiple = false)]
-  public sealed class StorableConstructorAttribute : Attribute { }
-}
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableHookAttribute.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableHookAttribute.cs	(revision 16453)
+++ 	(revision )
@@ -1,71 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2019 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 System;
-
-namespace HeuristicLab.Persistence.Default.CompositeSerializers.Storable {
-
-
-  /// <summary>
-  /// Indicates the time at which the hook should be invoked.
-  /// </summary>
-  public enum HookType {
-
-    /// <summary>
-    /// States that this hook should be called before the storable
-    /// serializer starts decomposing the object.
-    /// </summary>
-    BeforeSerialization,
-
-    /// <summary>
-    /// States that this hook should be called after the storable
-    /// serializer hast complete re-assembled the object.
-    /// </summary>
-    AfterDeserialization
-  };
-
-
-  /// <summary>
-  /// Mark methods that should be called at certain times during
-  /// serialization/deserialization by the <c>StorableSerializer</c>.
-  /// </summary>
-  [AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = true)]
-  public sealed class StorableHookAttribute : Attribute {
-
-    private readonly HookType hookType;
-    /// <summary>
-    /// Gets the type of the hook.
-    /// </summary>
-    /// <value>The type of the hook.</value>
-    public HookType HookType {
-      get { return hookType; }
-    }
-
-    /// <summary>
-    /// Mark method as <c>StorableSerializer</c> hook to be run
-    /// at the <c>HookType</c> time.
-    /// </summary>
-    /// <param name="hookType">Type of the hook.</param>
-    public StorableHookAttribute(HookType hookType) {
-      this.hookType = hookType;
-    }
-  }
-}
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableMemberInfo.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableMemberInfo.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableMemberInfo.cs	(revision 16462)
@@ -23,5 +23,5 @@
 using System.Reflection;
 using System.Text;
-using HeuristicLab.Persistence.Core;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Persistence.Default.CompositeSerializers.Storable {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableReflection.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableReflection.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableReflection.cs	(revision 16462)
@@ -24,5 +24,5 @@
 using System.Linq;
 using System.Reflection;
-using HeuristicLab.Persistence.Core;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Persistence.Default.CompositeSerializers.Storable {
@@ -43,17 +43,17 @@
         storableMembers.AddRange(GenerateStorableMembers(type.BaseType));
 
-      var storableClassAttribute = GetStorableClassAttribute(type);
-      if (storableClassAttribute != null) {
-        switch (storableClassAttribute.Type) {
-          case StorableClassType.MarkedOnly:
+      var storableTypeAttribute = GetStorableTypeAttribute(type);
+      if (storableTypeAttribute != null) {
+        switch (storableTypeAttribute.MemberSelection) {
+          case StorableMemberSelection.MarkedOnly:
             AddMarkedMembers(type, storableMembers); break;
-          case StorableClassType.AllFields:
+          case StorableMemberSelection.AllFields:
             AddAll(type, MemberTypes.Field, storableMembers); break;
-          case StorableClassType.AllProperties:
+          case StorableMemberSelection.AllProperties:
             AddAll(type, MemberTypes.Property, storableMembers); break;
-          case StorableClassType.AllFieldsAndAllProperties:
+          case StorableMemberSelection.AllFieldsAndAllProperties:
             AddAll(type, MemberTypes.Field | MemberTypes.Property, storableMembers); break;
           default:
-            throw new PersistenceException("unsupported [StorableClassType]: " + storableClassAttribute.Type);
+            throw new PersistenceException("unsupported [StorableMemberSelection]: " + storableTypeAttribute.MemberSelection);
         }
       }
@@ -62,5 +62,5 @@
 
     public static bool IsEmptyOrStorableType(Type type, bool recursive) {
-      if (!HasStorableClassAttribute(type) && !IsEmptyType(type, false)) return false;
+      if (!HasStorableTypeAttribute(type) && !IsEmptyType(type, false)) return false;
       return !recursive || type.BaseType == null || IsEmptyOrStorableType(type.BaseType, true);
     }
@@ -72,5 +72,5 @@
         foreach (var hook in CollectHooks(hookType, type.BaseType))
           yield return hook;
-      if (HasStorableClassAttribute(type)) {
+      if (HasStorableTypeAttribute(type)) {
         foreach (MethodInfo methodInfo in type.GetMethods(DECLARED_INSTANCE_MEMBERS)) {
           if (methodInfo.ReturnType == typeof(void) && methodInfo.GetParameters().Length == 0) {
@@ -174,22 +174,22 @@
     #region [StorableClass] helpers
 
-    private static StorableClassAttribute GetStorableClassAttribute(Type type) {
-      lock (storableClassCache) {
-        if (storableClassCache.ContainsKey(type))
-          return storableClassCache[type];
-        StorableClassAttribute attribute = type
-          .GetCustomAttributes(typeof(StorableClassAttribute), false)
-          .SingleOrDefault() as StorableClassAttribute;
-        storableClassCache.Add(type, attribute);
+    private static StorableTypeAttribute GetStorableTypeAttribute(Type type) {
+      lock (storableTypeCache) {
+        if (storableTypeCache.ContainsKey(type))
+          return storableTypeCache[type];
+        StorableTypeAttribute attribute = type
+          .GetCustomAttributes(typeof(StorableTypeAttribute), false)
+          .SingleOrDefault() as StorableTypeAttribute;
+        storableTypeCache.Add(type, attribute);
         return attribute;
       }
     }
 
-    public static bool HasStorableClassAttribute(Type type) {
-      return GetStorableClassAttribute(type) != null;
-    }
-
-    private static Dictionary<Type, StorableClassAttribute> storableClassCache =
-      new Dictionary<Type, StorableClassAttribute>();
+    public static bool HasStorableTypeAttribute(Type type) {
+      return GetStorableTypeAttribute(type) != null;
+    }
+
+    private static Dictionary<Type, StorableTypeAttribute> storableTypeCache =
+      new Dictionary<Type, StorableTypeAttribute>();
 
     #endregion
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableSerializer.cs	(revision 16462)
@@ -26,4 +26,5 @@
 using System.Reflection.Emit;
 using System.Text;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Interfaces;
@@ -49,5 +50,5 @@
 
     [StorableConstructor]
-    private StorableSerializer(bool deserializing) : this() { }
+    private StorableSerializer(StorableConstructorFlag _) { }
 
     #region ICompositeSerializer implementation
@@ -69,5 +70,5 @@
     /// </returns>
     public bool CanSerialize(Type type) {
-      var markedStorable = StorableReflection.HasStorableClassAttribute(type);
+      var markedStorable = StorableReflection.HasStorableTypeAttribute(type);
       if (GetConstructor(type) == null)
         if (markedStorable)
@@ -240,9 +241,10 @@
         .Where(ci => ci.GetCustomAttributes(typeof(StorableConstructorAttribute), false).Length > 0)) {
         if (ci.GetParameters().Length != 1 ||
-            ci.GetParameters()[0].ParameterType != typeof(bool))
-          throw new PersistenceException("StorableConstructor must have exactly one argument of type bool");
+            ci.GetParameters()[0].ParameterType != typeof(StorableConstructorFlag))
+          throw new PersistenceException("StorableConstructor must have exactly one argument of type StorableConstructorFlag");
         var dm = new DynamicMethod("", typeof(object), null, type, true);
         var ilgen = dm.GetILGenerator();
-        ilgen.Emit(OpCodes.Ldc_I4_1); // load true
+        var defaultFlagFieldInfo = typeof(StorableConstructorFlag).GetField("Default", BindingFlags.Static | BindingFlags.Public);
+        ilgen.Emit(OpCodes.Ldsfld, defaultFlagFieldInfo); // load the object
         ilgen.Emit(OpCodes.Newobj, ci);
         ilgen.Emit(OpCodes.Ret);
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StructSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StructSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StructSerializer.cs	(revision 16462)
@@ -24,5 +24,5 @@
 using System.Reflection;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -33,5 +33,5 @@
 
     [StorableConstructor]
-    private StructSerializer(bool deserializing) { }
+    private StructSerializer(StorableConstructorFlag _) { }
     public StructSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TupleSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TupleSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TupleSerializer.cs	(revision 16462)
@@ -25,5 +25,5 @@
 using System.Reflection;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -34,5 +34,5 @@
 
     [StorableConstructor]
-    private TupleSerializer(bool deserializing) { }
+    private TupleSerializer(StorableConstructorFlag _) { }
     public TupleSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TypeSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TypeSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TypeSerializer.cs	(revision 16462)
@@ -24,5 +24,5 @@
 using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -33,5 +33,5 @@
 
     [StorableConstructor]
-    private TypeSerializer(bool deserializing) { }
+    private TypeSerializer(StorableConstructorFlag _) { }
     public TypeSerializer() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/DebugString/DebugString.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/DebugString/DebugString.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/DebugString/DebugString.cs	(revision 16462)
@@ -20,5 +20,5 @@
 #endregion
 
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -39,5 +39,5 @@
 
     [StorableConstructor]
-    protected DebugString(bool deserializing) { }
+    protected DebugString(StorableConstructorFlag _) { }
     private DebugString() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/DebugString/DebugStringFormat.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/DebugString/DebugStringFormat.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/DebugString/DebugStringFormat.cs	(revision 16462)
@@ -20,5 +20,5 @@
 #endregion
 
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -37,5 +37,5 @@
 
     [StorableConstructor]
-    protected DebugStringFormat(bool deserializing) : base(deserializing) { }
+    protected DebugStringFormat(StorableConstructorFlag _) : base(_) { }
     public DebugStringFormat() { }
   }
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Compact/DoubleList2XmlSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Compact/DoubleList2XmlSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Compact/DoubleList2XmlSerializer.cs	(revision 16462)
@@ -23,6 +23,6 @@
 using System.Collections.Generic;
 using System.Text;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Auxiliary;
-using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Default.Xml.Primitive;
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberArray2XmlSerializerBase.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberArray2XmlSerializerBase.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberArray2XmlSerializerBase.cs	(revision 16462)
@@ -21,11 +21,9 @@
 
 using System;
-using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Auxiliary;
-using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Compact {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberEnumeration2XmlSerializerBase.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberEnumeration2XmlSerializerBase.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberEnumeration2XmlSerializerBase.cs	(revision 16462)
@@ -23,7 +23,6 @@
 using System.Collections;
 using System.Text;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Auxiliary;
-using HeuristicLab.Persistence.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Persistence.Default.Xml.Compact {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/EasyXmlGenerator.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/EasyXmlGenerator.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/EasyXmlGenerator.cs	(revision 16462)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.IO;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Auxiliary;
 using HeuristicLab.Persistence.Core;
@@ -181,5 +182,5 @@
       try {
         using (StreamWriter writer = new StreamWriter(stream)) {
-          Serializer serializer = new Serializer(obj, config);
+          Core.Serializer serializer = new Core.Serializer(obj, config);
           serializer.InterleaveTypeInformation = true;
           ReadableXmlGenerator generator = new ReadableXmlGenerator();
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Char2XmlFormatter.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Char2XmlFormatter.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Char2XmlFormatter.cs	(revision 16462)
@@ -23,5 +23,5 @@
 using System.Text;
 using System.Text.RegularExpressions;
-using HeuristicLab.Persistence.Core;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/DateTime2XmlSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/DateTime2XmlSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/DateTime2XmlSerializer.cs	(revision 16462)
@@ -21,5 +21,5 @@
 
 using System;
-using HeuristicLab.Persistence.Core;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Guid2XmlSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Guid2XmlSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/Guid2XmlSerializer.cs	(revision 16462)
@@ -22,5 +22,5 @@
 using System;
 using System.Globalization;
-using HeuristicLab.Persistence.Core;
+using HEAL.Fossil;
 
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/SimpleNumber2XmlSerializerBase.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/SimpleNumber2XmlSerializerBase.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/SimpleNumber2XmlSerializerBase.cs	(revision 16462)
@@ -22,5 +22,5 @@
 using System;
 using System.Reflection;
-using HeuristicLab.Persistence.Core;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/String2XmlSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/String2XmlSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/String2XmlSerializer.cs	(revision 16462)
@@ -23,5 +23,5 @@
 using System.Text;
 using System.Text.RegularExpressions;
-using HeuristicLab.Persistence.Core;
+using HEAL.Fossil;
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/TimeSpan2XmlSerializer.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/TimeSpan2XmlSerializer.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/TimeSpan2XmlSerializer.cs	(revision 16462)
@@ -21,5 +21,5 @@
 
 using System;
-using HeuristicLab.Persistence.Core;
+using HEAL.Fossil;
 
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlFormat.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlFormat.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlFormat.cs	(revision 16462)
@@ -20,5 +20,5 @@
 #endregion
 
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -38,5 +38,5 @@
 
     [StorableConstructor]
-    protected XmlFormat(bool deserializing) : base(deserializing) { }
+    protected XmlFormat(StorableConstructorFlag _) : base(_) { }
     public XmlFormat() { }
   }
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlGenerator.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlGenerator.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlGenerator.cs	(revision 16462)
@@ -27,4 +27,5 @@
 using System.Text;
 using System.Threading;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
@@ -312,9 +313,9 @@
 
     private static void Serialize(object obj, Stream stream, Configuration config, bool includeAssemblies, CompressionLevel compression, CancellationToken cancellationToken = default(CancellationToken)) {
-      Serializer serializer = new Serializer(obj, config);
+      Core.Serializer serializer = new Core.Serializer(obj, config);
       Serialize(stream, includeAssemblies, compression, serializer, cancellationToken);
     }
 
-    private static void Serialize(Stream stream, bool includeAssemblies, CompressionLevel compression, Serializer serializer, CancellationToken cancellationToken = default(CancellationToken)) {
+    private static void Serialize(Stream stream, bool includeAssemblies, CompressionLevel compression, Core.Serializer serializer, CancellationToken cancellationToken = default(CancellationToken)) {
       try {
         cancellationToken.ThrowIfCancellationRequested();
@@ -429,5 +430,5 @@
     public static void Serialize(object obj, Stream stream, Configuration config, bool includeAssemblies, CompressionType compressionType = CompressionType.GZip, CancellationToken cancellationToken = default(CancellationToken)) {
       try {
-        Serializer serializer = new Serializer(obj, config);
+        Core.Serializer serializer = new Core.Serializer(obj, config);
         if (compressionType == CompressionType.Zip) {
           Serialize(obj, stream, config, includeAssemblies, CompressionLevel.Optimal, cancellationToken);
@@ -454,5 +455,5 @@
                                  CompressionType compressionType = CompressionType.GZip, CancellationToken cancellationToken = default(CancellationToken)) {
       try {
-        Serializer serializer = new Serializer(obj, config);
+        Core.Serializer serializer = new Core.Serializer(obj, config);
         if (compressionType == CompressionType.Zip) {
           Serialize(stream, includeAssemblies, CompressionLevel.Optimal, serializer, cancellationToken);
@@ -468,5 +469,5 @@
     }
 
-    private static void Serialize(Stream stream, Serializer serializer, CancellationToken cancellationToken = default(CancellationToken)) {
+    private static void Serialize(Stream stream, Core.Serializer serializer, CancellationToken cancellationToken = default(CancellationToken)) {
       cancellationToken.ThrowIfCancellationRequested();
       using (StreamWriter writer = new StreamWriter(new GZipStream(stream, CompressionMode.Compress))) {
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlParser.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlParser.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlParser.cs	(revision 16462)
@@ -26,4 +26,5 @@
 using System.IO.Compression;
 using System.Xml;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Core;
 using HeuristicLab.Persistence.Core.Tokens;
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlString.cs
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlString.cs	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/Default/Xml/XmlString.cs	(revision 16462)
@@ -21,5 +21,5 @@
 
 using System.Text;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HEAL.Fossil;
 using HeuristicLab.Persistence.Interfaces;
 
@@ -41,5 +41,5 @@
 
     [StorableConstructor]
-    protected XmlString(bool deserializing) { }
+    protected XmlString(StorableConstructorFlag _) { }
     private XmlString() { }
 
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/HeuristicLab.Persistence-3.3.csproj
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/HeuristicLab.Persistence-3.3.csproj	(revision 16453)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/HeuristicLab.Persistence-3.3.csproj	(revision 16462)
@@ -108,12 +108,18 @@
   </PropertyGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
+  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
   </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-  <ItemGroup>
+  <ItemGroup>
+    <Reference Include="Google.Protobuf, Version=3.6.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
+      <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, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\HEAL.Fossil.1.0.0\lib\netstandard2.0\HEAL.Fossil.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.configuration" />
@@ -132,7 +138,7 @@
     <Compile Include="Auxiliary\TypeNameParser.cs" />
     <Compile Include="Auxiliary\ReflectionTools.cs" />
+    <None Include="packages.config" />
     <None Include="Plugin.cs.frame" />
     <Compile Include="Core\Configuration.cs" />
-    <Compile Include="Core\PersistenceException.cs" />
     <Compile Include="Core\PrimitiveSerializerBase.cs" />
     <Compile Include="Core\FormatBase.cs" />
@@ -157,10 +163,5 @@
     <Compile Include="Default\CompositeSerializers\Storable\StorableReflection.cs" />
     <Compile Include="Default\CompositeSerializers\Storable\StorableMemberInfo.cs" />
-    <Compile Include="Default\CompositeSerializers\Storable\StorableClassType.cs" />
     <Compile Include="Core\DataMemberAccessor.cs" />
-    <Compile Include="Default\CompositeSerializers\Storable\StorableClassAttribute.cs" />
-    <Compile Include="Default\CompositeSerializers\Storable\StorableAttribute.cs" />
-    <Compile Include="Default\CompositeSerializers\Storable\StorableConstructorAttribute.cs" />
-    <Compile Include="Default\CompositeSerializers\Storable\StorableHookAttribute.cs" />
     <Compile Include="Default\CompositeSerializers\Storable\StorableSerializer.cs" />
     <Compile Include="Default\CompositeSerializers\StructSerializer.cs" />
Index: branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/packages.config
===================================================================
--- branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/packages.config	(revision 16462)
+++ branches/2520_PersistenceReintegration/HeuristicLab.Persistence/3.3/packages.config	(revision 16462)
@@ -0,0 +1,5 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Google.Protobuf" version="3.6.1" targetFramework="net461" />
+  <package id="HEAL.Fossil" version="1.0.0" targetFramework="net461" />
+</packages>
