Index: /trunk/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj
===================================================================
--- /trunk/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj	(revision 16570)
+++ /trunk/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj	(revision 16571)
@@ -143,4 +143,5 @@
     <Compile Include="ArrayExtensions.cs" />
     <Compile Include="ExceptionExtensions.cs" />
+    <Compile Include="Plugin.cs" />
     <Compile Include="Statistics\EmpiricalCumulativeDistributionFunction.cs" />
     <Compile Include="ListExtensions.cs" />
@@ -154,5 +155,4 @@
     <Compile Include="Statistics\EnumerableStatisticExtensions.cs" />
     <Compile Include="IDeepCloneable.cs" />
-    <Compile Include="Plugin.cs" />
     <Compile Include="ReferenceEqualityComparer.cs" />
     <Compile Include="SequenceGenerator.cs" />
Index: /trunk/HeuristicLab.Common/3.3/Plugin.cs.frame
===================================================================
--- /trunk/HeuristicLab.Common/3.3/Plugin.cs.frame	(revision 16570)
+++ /trunk/HeuristicLab.Common/3.3/Plugin.cs.frame	(revision 16571)
@@ -31,4 +31,5 @@
   [Plugin("HeuristicLab.Common", "3.3.15.$WCREV$")]
   [PluginFile("HeuristicLab.Common-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabCommonPlugin : PluginBase {
   }
Index: /trunk/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Formatters/SymbolicExpressionTreeHierarchicalFormatter.cs
===================================================================
--- /trunk/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Formatters/SymbolicExpressionTreeHierarchicalFormatter.cs	(revision 16570)
+++ /trunk/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Formatters/SymbolicExpressionTreeHierarchicalFormatter.cs	(revision 16571)
@@ -31,7 +31,8 @@
   [StorableType("0a9ad135-ced1-4c3b-94ff-b1fb41193515")]
   public sealed class SymbolicExpressionTreeHierarchicalFormatter : NamedItem, ISymbolicExpressionTreeStringFormatter {
-    private SymbolicExpressionTreeHierarchicalFormatter(SymbolicExpressionTreeHierarchicalFormatter original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    [StorableConstructor]
+    private SymbolicExpressionTreeHierarchicalFormatter(StorableConstructorFlag _) : base(_) { }
+
+    private SymbolicExpressionTreeHierarchicalFormatter(SymbolicExpressionTreeHierarchicalFormatter original, Cloner cloner) : base(original, cloner) { }
     public override IDeepCloneable Clone(Cloner cloner) {
       return new SymbolicExpressionTreeHierarchicalFormatter(this, cloner);
Index: /trunk/HeuristicLab.Hive/3.3/Plugin.cs.frame
===================================================================
--- /trunk/HeuristicLab.Hive/3.3/Plugin.cs.frame	(revision 16570)
+++ /trunk/HeuristicLab.Hive/3.3/Plugin.cs.frame	(revision 16571)
@@ -30,5 +30,6 @@
   [PluginFile("HeuristicLab.Hive-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Common", "3.3")]
-  [PluginDependency("HeuristicLab.Core", "3.3")]  
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabHivePlugin : PluginBase {
   }
Index: /trunk/HeuristicLab.Persistence/3.3/Auxiliary/TypeName.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Auxiliary/TypeName.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Auxiliary/TypeName.cs	(revision 16571)
@@ -33,5 +33,5 @@
   /// attributes.
   /// </summary>
-  [StorableClass]
+  [StorableType("843C9419-B662-4902-BE18-2ABEB1BF61F0")]
   public class TypeName {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Core/Configuration.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Core/Configuration.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Core/Configuration.cs	(revision 16571)
@@ -32,5 +32,5 @@
   /// <c>ConfigurationService</c>.
   /// </summary>
-  [StorableClass]
+  [StorableType("72F8B3EA-0BC3-43A8-9B58-EF798C154CF3")]
   public class Configuration {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Core/FormatBase.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Core/FormatBase.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Core/FormatBase.cs	(revision 16571)
@@ -29,5 +29,5 @@
   /// </summary>
   /// <typeparam name="SerialDataFormat">The type of the serial data format.</typeparam>
-  [StorableClass]
+  [StorableType("4EC2B779-0778-4B95-BF4F-5F88C1C1FF1F")]
   public abstract class FormatBase<SerialDataFormat> : IFormat<SerialDataFormat> where SerialDataFormat : ISerialData {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Core/PrimitiveSerializerBase.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Core/PrimitiveSerializerBase.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Core/PrimitiveSerializerBase.cs	(revision 16571)
@@ -32,5 +32,5 @@
   /// <typeparam name="Source">The source type.</typeparam>
   /// <typeparam name="SerialData">The serialized type.</typeparam>
-  [StorableClass]
+  [StorableType("A43393DF-4A1F-42A0-BA2D-1DFEA04EBD97")]
   public abstract class PrimitiveSerializerBase<Source, SerialData> :
       IPrimitiveSerializer<Source, SerialData>
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ArraySerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ArraySerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ArraySerializer.cs	(revision 16571)
@@ -28,5 +28,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("EBEA3A72-AF1D-44BF-8A09-1645402E0715")]
   internal sealed class ArraySerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/CompactNumberArray2StringSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/CompactNumberArray2StringSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/CompactNumberArray2StringSerializer.cs	(revision 16571)
@@ -31,5 +31,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("19E6CBD6-B977-4828-8121-5B5E9E856F2B")]
   public sealed class CompactNumberArray2StringSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ConcreteDictionarySerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ConcreteDictionarySerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/ConcreteDictionarySerializer.cs	(revision 16571)
@@ -30,5 +30,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("5C0B5959-CFCA-4067-9D4D-540846D8F6EF")]
   internal sealed class ConcreteDictionarySerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/DictionarySerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/DictionarySerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/DictionarySerializer.cs	(revision 16571)
@@ -30,5 +30,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("D66B7E71-1399-41F0-A97B-E2A2A0C87D71")]
   internal sealed class DictionarySerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumSerializer.cs	(revision 16571)
@@ -28,5 +28,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("1DBD47D9-312B-4572-8B66-C3BFFD004FD6")]
   internal sealed class EnumSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumerableSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumerableSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/EnumerableSerializer.cs	(revision 16571)
@@ -31,5 +31,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("0EC0CBC9-A9C3-49BB-B3AC-6991DE771F27")]
   internal sealed class EnumerableSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/HashSetSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/HashSetSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/HashSetSerializer.cs	(revision 16571)
@@ -31,5 +31,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("3A6430F5-B40C-46D1-89F2-B8AAAD46F052")]
   internal sealed class HashSetSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/KeyValuePairSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/KeyValuePairSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/KeyValuePairSerializer.cs	(revision 16571)
@@ -30,5 +30,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("7A42AEE3-A9C5-46B7-9968-F8EF3E146DF3")]
   internal sealed class KeyValuePairSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Number2StringSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Number2StringSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Number2StringSerializer.cs	(revision 16571)
@@ -40,5 +40,5 @@
   /// but can be useful in generating custom serializers.
   /// </summary>
-  [StorableClass]
+  [StorableType("CD4E3C0C-C766-42EA-B968-C6EBD0FAA637")]
   public sealed class Number2StringSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs	(revision 16571)
@@ -31,5 +31,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("44392644-F6AE-48F3-B0D8-08D3ED7DA307")]
   internal sealed class NumberEnumerable2StringSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/QueueSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/QueueSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/QueueSerializer.cs	(revision 16571)
@@ -30,5 +30,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("EAAB8D01-445B-4834-B318-2AD56B7B537E")]
   internal sealed class QueueSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StackSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StackSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StackSerializer.cs	(revision 16571)
@@ -30,5 +30,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("0EFD0631-C3A9-4233-B5B2-06103C908D78")]
   internal sealed class StackSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableSerializer.cs	(revision 16571)
@@ -39,5 +39,5 @@
   /// or <c>AllFieldsAndAllProperties</c>.
   /// </summary>
-  [StorableClass]
+  [StorableType("F60343E8-4337-4171-A50A-6A57D09267ED")]
   public sealed class StorableSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StructSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StructSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/StructSerializer.cs	(revision 16571)
@@ -29,5 +29,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("85C63E3B-C604-4267-8008-6B89521BA312")]
   internal sealed class StructSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TupleSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TupleSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TupleSerializer.cs	(revision 16571)
@@ -30,5 +30,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("463686AC-AA54-4D85-88DF-65F67AE0FA85")]
   internal sealed class TupleSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TypeSerializer.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TypeSerializer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/TypeSerializer.cs	(revision 16571)
@@ -29,5 +29,5 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers {
 
-  [StorableClass]
+  [StorableType("0CF9A082-629F-4554-8912-CC37228175E2")]
   internal sealed class TypeSerializer : ICompositeSerializer {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/DebugString/DebugString.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/DebugString/DebugString.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/DebugString/DebugString.cs	(revision 16571)
@@ -28,5 +28,5 @@
   /// Simple write-only format for debugging purposes.
   /// </summary>
-  [StorableClass]
+  [StorableType("11A7D76E-AB88-43E1-97E8-D195959C34A2")]
   public class DebugString : ISerialData {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/DebugString/DebugStringFormat.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/DebugString/DebugStringFormat.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/DebugString/DebugStringFormat.cs	(revision 16571)
@@ -28,5 +28,5 @@
   /// Simple write-only format for debugging purposes.
   /// </summary>
-  [StorableClass]
+  [StorableType("961AC268-6669-4B0E-A2B5-38C99BA63FD9")]
   public class DebugStringFormat : FormatBase<DebugString> {
     /// <summary>
Index: /trunk/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberArray2XmlSerializerBase.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberArray2XmlSerializerBase.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberArray2XmlSerializerBase.cs	(revision 16571)
@@ -29,5 +29,5 @@
 namespace HeuristicLab.Persistence.Default.Xml.Compact {
 
-  [StorableClass]
+  [StorableType("CE0A5AEB-FC09-4F66-9F92-C7B30BAB2713")]
   internal abstract class NumberArray2XmlSerializerBase<T> : CompactXmlSerializerBase<T> where T : class {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberEnumeration2XmlSerializerBase.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberEnumeration2XmlSerializerBase.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/Xml/Compact/NumberEnumeration2XmlSerializerBase.cs	(revision 16571)
@@ -28,5 +28,5 @@
 namespace HeuristicLab.Persistence.Default.Xml.Compact {
 
-  [StorableClass]
+  [StorableType("B4D23353-9322-4005-BAF2-AB3034DEE34A")]
   internal abstract class NumberEnumeration2XmlSerializerBase<T> : CompactXmlSerializerBase<T> where T : IEnumerable {
 
Index: /trunk/HeuristicLab.Persistence/3.3/Default/Xml/XmlFormat.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/Xml/XmlFormat.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/Xml/XmlFormat.cs	(revision 16571)
@@ -29,5 +29,5 @@
   /// or save to a file.
   /// </summary>
-  [StorableClass]
+  [StorableType("4E9895D9-BB30-43A6-AB35-4263FFDE3C0E")]
   public class XmlFormat : FormatBase<XmlString> {
     /// <summary>
Index: /trunk/HeuristicLab.Persistence/3.3/Default/Xml/XmlString.cs
===================================================================
--- /trunk/HeuristicLab.Persistence/3.3/Default/Xml/XmlString.cs	(revision 16570)
+++ /trunk/HeuristicLab.Persistence/3.3/Default/Xml/XmlString.cs	(revision 16571)
@@ -29,5 +29,5 @@
   /// XML friendly encapsulation of string data.
   /// </summary>
-  [StorableClass]
+  [StorableType("C7207D30-79F0-47C7-B151-6E96A594F75C")]
   public class XmlString : ISerialData {
 
Index: /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/TreeMatching/SymbolicExpressionTreeEqualityComparer.cs
===================================================================
--- /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/TreeMatching/SymbolicExpressionTreeEqualityComparer.cs	(revision 16570)
+++ /trunk/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/TreeMatching/SymbolicExpressionTreeEqualityComparer.cs	(revision 16571)
@@ -10,4 +10,9 @@
     public SymbolicExpressionTreeNodeEqualityComparer SimilarityComparer { get; set; }
 
+
+    [StorableConstructor]
+    protected SymbolicExpressionTreeEqualityComparer(StorableConstructorFlag _) { }
+    public SymbolicExpressionTreeEqualityComparer() { }
+
     public bool Equals(ISymbolicExpressionTree a, ISymbolicExpressionTree b) {
       if (SimilarityComparer == null) throw new Exception("SimilarityComparer needs to be initialized first.");
@@ -18,4 +23,5 @@
       return (tree.Length << 8) % 12345;
     }
+
   }
 }
Index: /trunk/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval.cs
===================================================================
--- /trunk/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval.cs	(revision 16570)
+++ /trunk/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Interval.cs	(revision 16571)
@@ -34,4 +34,7 @@
     public double UpperBound { get; private set; }
 
+    [StorableConstructor]
+    protected Interval(StorableConstructorFlag _) { }
+
     public Interval(double lowerBound, double upperBound) {
       if (lowerBound > upperBound)
Index: /trunk/HeuristicLab.Tests/HeuristicLab-3.3/StorableTest.cs
===================================================================
--- /trunk/HeuristicLab.Tests/HeuristicLab-3.3/StorableTest.cs	(revision 16570)
+++ /trunk/HeuristicLab.Tests/HeuristicLab-3.3/StorableTest.cs	(revision 16571)
@@ -42,11 +42,24 @@
 
       foreach (Type storableType in ApplicationManager.Manager.GetTypes(typeof(object))
-        .Where(StorableClassAttribute.IsStorableClass)) {
+        .Where(StorableTypeAttribute.IsStorableType)) {
         //test only types contained in HL plugin assemblies
+        if (!storableType.Namespace.StartsWith("HeuristicLab")) continue;
         if (storableType.Namespace.Contains(".Tests")) continue;
         if (!PluginLoader.Assemblies.Contains(storableType.Assembly)) continue;
 
+        if (storableType.IsEnum || storableType.IsInterface) continue;
+        var storableFields = storableType
+          .GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
+          .Where(fi => StorableAttribute.IsStorable(fi));
+        var storableProps = storableType
+          .GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
+          .Where(fi => StorableAttribute.IsStorable(fi));
+
+        // a storable constructor should be given but is not absolutely required.
+        // when there are no storable fields then a storable ctor has no real purpose.
+        if (!storableFields.Any() && !storableProps.Any()) continue;
+
         IEnumerable<ConstructorInfo> ctors = storableType.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
-        ConstructorInfo storableConstructor = ctors.Where(c => c.GetParameters().Count() == 1 && c.GetParameters().First().ParameterType == typeof(bool)).FirstOrDefault();
+        ConstructorInfo storableConstructor = ctors.Where(c => c.GetParameters().Count() == 1 && c.GetParameters().First().ParameterType == typeof(HEAL.Attic.StorableConstructorFlag)).FirstOrDefault();
         if (storableConstructor == null) errorMessage.Append(Environment.NewLine + storableType.ToString() + ": No storable constructor is defined.");
         else {
@@ -69,5 +82,5 @@
       foreach (var type in ApplicationManager.Manager.GetTypes(typeof(object), onlyInstantiable: false, includeGenericTypeDefinitions: true)
         .Where(t => t.Namespace != null && !t.Namespace.Contains(".Tests"))
-        .Where(t => !StorableClassAttribute.IsStorableClass(t))) {
+        .Where(t => !StorableTypeAttribute.IsStorableType(t))) {
         var members = type.GetMembers(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.DeclaredOnly);
         var storableConstructor = members.SingleOrDefault(m => Attribute.IsDefined(m, typeof(StorableConstructorAttribute), inherit: false));
@@ -75,7 +88,7 @@
 
         if (storableConstructor != null) {
-          errorMessage.Append(Environment.NewLine + type.Namespace + "." + type.GetPrettyName() + ": Contains a storable constructor but is not a storable class.");
+          errorMessage.Append(Environment.NewLine + type.Namespace + "." + type.GetPrettyName() + ": Contains a storable constructor but is not a storable type.");
         } else if (storableMembers.Any()) {
-          errorMessage.Append(Environment.NewLine + type.Namespace + "." + type.GetPrettyName() + ": Contains at least one storable member but is not a storable class.");
+          errorMessage.Append(Environment.NewLine + type.Namespace + "." + type.GetPrettyName() + ": Contains at least one storable member but is not a storable type.");
         }
       }
