Index: trunk/sources/HeuristicLab.Collections/3.3/HeuristicLab.Collections-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/HeuristicLab.Collections-3.3.csproj	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/HeuristicLab.Collections-3.3.csproj	(revision 3560)
@@ -122,4 +122,8 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
Index: trunk/sources/HeuristicLab.Collections/3.3/HeuristicLabCollectionsPlugin.cs.frame
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/HeuristicLabCollectionsPlugin.cs.frame	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/HeuristicLabCollectionsPlugin.cs.frame	(revision 3560)
@@ -28,5 +28,4 @@
   [Plugin("HeuristicLab.Collections", "3.3.0.$WCREV$")]
   [PluginFile("HeuristicLab.Collections-3.3.dll", PluginFileType.Assembly)]
-  [PluginDependency("HeuristicLab.Common", "3.3")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabCollectionsPlugin : PluginBase {
Index: trunk/sources/HeuristicLab.Collections/3.3/ObservableArray.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ObservableArray.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ObservableArray.cs	(revision 3560)
@@ -25,8 +25,11 @@
 using System.ComponentModel;
 using System.Linq;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ObservableArray<T> : IObservableArray<T> {
+    [Storable]
     protected T[] array;
 
@@ -70,4 +73,6 @@
       array = collection.ToArray();
     }
+    [StorableConstructor]
+    protected ObservableArray(bool deserializing) { }
     #endregion
 
Index: trunk/sources/HeuristicLab.Collections/3.3/ObservableCollection.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ObservableCollection.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ObservableCollection.cs	(revision 3560)
@@ -24,8 +24,11 @@
 using System.Collections.Generic;
 using System.ComponentModel;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ObservableCollection<T> : IObservableCollection<T> {
+    [Storable]
     protected List<T> list;
 
@@ -58,4 +61,6 @@
       list = new List<T>(collection);
     }
+    [StorableConstructor]
+    protected ObservableCollection(bool deserializing) { }
     #endregion
 
Index: trunk/sources/HeuristicLab.Collections/3.3/ObservableDictionary.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ObservableDictionary.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ObservableDictionary.cs	(revision 3560)
@@ -25,8 +25,11 @@
 using System.ComponentModel;
 using System.Linq;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ObservableDictionary<TKey, TValue> : IObservableDictionary<TKey, TValue> {
+    [Storable]
     protected Dictionary<TKey, TValue> dict;
 
@@ -84,4 +87,6 @@
       dict = new Dictionary<TKey, TValue>(dictionary, comparer);
     }
+    [StorableConstructor]
+    protected ObservableDictionary(bool deserializing) { }
     #endregion
 
Index: trunk/sources/HeuristicLab.Collections/3.3/ObservableKeyedCollection.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ObservableKeyedCollection.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ObservableKeyedCollection.cs	(revision 3560)
@@ -25,8 +25,11 @@
 using System.ComponentModel;
 using System.Linq;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public abstract class ObservableKeyedCollection<TKey, TItem> : IObservableKeyedCollection<TKey, TItem> {
+    [Storable]
     protected Dictionary<TKey, TItem> dict;
 
@@ -74,4 +77,6 @@
         dict.Add(GetKeyForItem(item), item);
     }
+    [StorableConstructor]
+    protected ObservableKeyedCollection(bool deserializing) { }
     #endregion
 
Index: trunk/sources/HeuristicLab.Collections/3.3/ObservableList.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ObservableList.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ObservableList.cs	(revision 3560)
@@ -24,8 +24,11 @@
 using System.Collections.Generic;
 using System.ComponentModel;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ObservableList<T> : IObservableList<T> {
+    [Storable]
     protected List<T> list;
 
@@ -72,4 +75,6 @@
       list = new List<T>(collection);
     }
+    [StorableConstructor]
+    protected ObservableList(bool deserializing) { }
     #endregion
 
Index: trunk/sources/HeuristicLab.Collections/3.3/ObservableSet.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ObservableSet.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ObservableSet.cs	(revision 3560)
@@ -25,8 +25,11 @@
 using System.ComponentModel;
 using System.Linq;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ObservableSet<T> : IObservableSet<T> {
+    [Storable]
     protected HashSet<T> set;
 
@@ -56,4 +59,6 @@
       set = new HashSet<T>(collection, comparer);
     }
+    [StorableConstructor]
+    protected ObservableSet(bool deserializing) { }
     #endregion
 
Index: trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableArray.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableArray.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableArray.cs	(revision 3560)
@@ -24,8 +24,11 @@
 using System.Collections.Generic;
 using System.ComponentModel;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ReadOnlyObservableArray<T> : IObservableArray<T> {
+    [Storable]
     protected IObservableArray<T> array;
 
@@ -57,4 +60,6 @@
       RegisterEvents();
     }
+    [StorableConstructor]
+    protected ReadOnlyObservableArray(bool deserializing) { }
     #endregion
 
@@ -106,4 +111,5 @@
 
     #region Events
+    [StorableHook(HookType.AfterDeserialization)]
     protected void RegisterEvents() {
       array.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<T>>(array_ItemsReplaced);
Index: trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableCollection.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableCollection.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableCollection.cs	(revision 3560)
@@ -24,8 +24,11 @@
 using System.Collections.Generic;
 using System.ComponentModel;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ReadOnlyObservableCollection<T> : IObservableCollection<T> {
+    [Storable]
     protected IObservableCollection<T> collection;
 
@@ -46,4 +49,6 @@
       RegisterEvents();
     }
+    [StorableConstructor]
+    protected ReadOnlyObservableCollection(bool deserializing) { }
     #endregion
 
@@ -84,4 +89,5 @@
 
     #region Events
+    [StorableHook(HookType.AfterDeserialization)]
     protected void RegisterEvents() {
       collection.ItemsAdded += new CollectionItemsChangedEventHandler<T>(collection_ItemsAdded);
Index: trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableDictionary.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableDictionary.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableDictionary.cs	(revision 3560)
@@ -24,8 +24,11 @@
 using System.Collections.Generic;
 using System.ComponentModel;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ReadOnlyObservableDictionary<TKey, TValue> : IObservableDictionary<TKey, TValue> {
+    [Storable]
     protected IObservableDictionary<TKey, TValue> dict;
 
@@ -60,4 +63,6 @@
       RegisterEvents();
     }
+    [StorableConstructor]
+    protected ReadOnlyObservableDictionary(bool deserializing) { }
     #endregion
 
@@ -111,4 +116,5 @@
 
     #region Events
+    [StorableHook(HookType.AfterDeserialization)]
     protected void RegisterEvents() {
       dict.ItemsAdded += new CollectionItemsChangedEventHandler<KeyValuePair<TKey, TValue>>(dict_ItemsAdded);
Index: trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableKeyedCollection.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableKeyedCollection.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableKeyedCollection.cs	(revision 3560)
@@ -24,8 +24,11 @@
 using System.Collections.Generic;
 using System.ComponentModel;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ReadOnlyObservableKeyedCollection<TKey, TItem> : IObservableKeyedCollection<TKey, TItem> {
+    [Storable]
     protected IObservableKeyedCollection<TKey, TItem> collection;
 
@@ -52,4 +55,6 @@
       RegisterEvents();
     }
+    [StorableConstructor]
+    protected ReadOnlyObservableKeyedCollection(bool deserializing) { }
     #endregion
 
@@ -100,4 +105,5 @@
 
     #region Events
+    [StorableHook(HookType.AfterDeserialization)]
     protected void RegisterEvents() {
       collection.ItemsAdded += new CollectionItemsChangedEventHandler<TItem>(collection_ItemsAdded);
Index: trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableList.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableList.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableList.cs	(revision 3560)
@@ -24,8 +24,11 @@
 using System.Collections.Generic;
 using System.ComponentModel;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ReadOnlyObservableList<T> : IObservableList<T> {
+    [Storable]
     protected IObservableList<T> list;
 
@@ -54,4 +57,6 @@
       RegisterEvents();
     }
+    [StorableConstructor]
+    protected ReadOnlyObservableList(bool deserializing) { }
     #endregion
 
@@ -103,4 +108,5 @@
 
     #region Events
+    [StorableHook(HookType.AfterDeserialization)]
     protected void RegisterEvents() {
       list.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<T>>(list_ItemsAdded);
Index: trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableSet.cs
===================================================================
--- trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableSet.cs	(revision 3390)
+++ trunk/sources/HeuristicLab.Collections/3.3/ReadOnlyObservableSet.cs	(revision 3560)
@@ -24,8 +24,11 @@
 using System.Collections.Generic;
 using System.ComponentModel;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Collections {
+  [StorableClass]
   [Serializable]
   public class ReadOnlyObservableSet<T> : IObservableSet<T> {
+    [Storable]
     protected IObservableSet<T> set;
 
@@ -46,4 +49,6 @@
       RegisterEvents();
     }
+    [StorableConstructor]
+    protected ReadOnlyObservableSet(bool deserializing) { }
     #endregion
 
@@ -125,4 +130,5 @@
 
     #region Events
+    [StorableHook(HookType.AfterDeserialization)]
     protected void RegisterEvents() {
       set.ItemsAdded += new CollectionItemsChangedEventHandler<T>(set_ItemsAdded);
