Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/ConcurrentTaskDownloader.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/ConcurrentTaskDownloader.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/ConcurrentTaskDownloader.cs	(revision 14927)
@@ -86,6 +86,5 @@
           result = HiveServiceLocator.Instance.CallHiveService(s => s.GetTaskData(task.Id));
         }, Settings.Default.MaxRepeatServiceCalls, "Failed to download task data.");
-      }
-      finally {
+      } finally {
         downloadSemaphore.Release();
       }
@@ -100,6 +99,5 @@
         taskData.Item2.Data = null; // reduce memory consumption.
         return new Tuple<Task, T>(taskData.Item1, deserializedJob);
-      }
-      finally {
+      } finally {
         deserializeSemaphore.Release();
       }
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HeuristicLab.Clients.Hive-3.3.csproj
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HeuristicLab.Clients.Hive-3.3.csproj	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HeuristicLab.Clients.Hive-3.3.csproj	(revision 14927)
@@ -239,4 +239,8 @@
       <Private>False</Private>
     </ProjectReference>
+    <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.Persistence\4.0\HeuristicLab.Persistence-4.0.csproj">
       <Project>{b1663091-8156-4deb-9e37-5b19810a4644}</Project>
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveAdminClient.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveAdminClient.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveAdminClient.cs	(revision 14927)
@@ -83,9 +83,7 @@
           service.GetSlaves().ForEach(s => resources.Add(s));
         });
-      }
-      catch {
+      } catch {
         throw;
-      }
-      finally {
+      } finally {
         OnRefreshed();
       }
@@ -104,9 +102,7 @@
             service.GetDowntimesForResource(downtimeForResourceId).ForEach(d => downtimes.Add(d));
           });
-        }
-        catch {
+        } catch {
           throw;
-        }
-        finally {
+        } finally {
           OnRefreshed();
         }
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveClient.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveClient.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveClient.cs	(revision 14927)
@@ -99,10 +99,8 @@
           jobs.Add(new RefreshableJob(j));
         }
-      }
-      catch {
+      } catch {
         jobs = null;
         throw;
-      }
-      finally {
+      } finally {
         OnRefreshed();
       }
@@ -110,14 +108,13 @@
 
     public void RefreshAsync(Action<Exception> exceptionCallback) {
-      var call = new Func<Exception>(delegate() {
+      var call = new Func<Exception>(delegate () {
         try {
           Refresh();
-        }
-        catch (Exception ex) {
+        } catch (Exception ex) {
           return ex;
         }
         return null;
       });
-      call.BeginInvoke(delegate(IAsyncResult result) {
+      call.BeginInvoke(delegate (IAsyncResult result) {
         Exception ex = call.EndInvoke(result);
         if (ex != null) exceptionCallback(ex);
@@ -146,14 +143,13 @@
     }
     public static void StoreAsync(Action<Exception> exceptionCallback, IHiveItem item, CancellationToken cancellationToken) {
-      var call = new Func<Exception>(delegate() {
+      var call = new Func<Exception>(delegate () {
         try {
           Store(item, cancellationToken);
-        }
-        catch (Exception ex) {
+        } catch (Exception ex) {
           return ex;
         }
         return null;
       });
-      call.BeginInvoke(delegate(IAsyncResult result) {
+      call.BeginInvoke(delegate (IAsyncResult result) {
         Exception ex = call.EndInvoke(result);
         if (ex != null) exceptionCallback(ex);
@@ -294,6 +290,5 @@
         }
         TS.Task.WaitAll(tasks.ToArray());
-      }
-      finally {
+      } finally {
         refreshableJob.Job.Modified = false;
         refreshableJob.IsProgressing = false;
@@ -394,6 +389,5 @@
         taskUploadSemaphore.Release(); semaphoreReleased = true; // the semaphore has to be release before waitall!
         TS.Task.WaitAll(tasks.ToArray());
-      }
-      finally {
+      } finally {
         if (!semaphoreReleased) taskUploadSemaphore.Release();
       }
@@ -443,10 +437,9 @@
         } else if (refreshableJob.IsPaused()) {
           refreshableJob.ExecutionState = Core.ExecutionState.Paused;
-        } else { 
+        } else {
           refreshableJob.ExecutionState = Core.ExecutionState.Started;
         }
         refreshableJob.OnLoaded();
-      }
-      finally {
+      } finally {
         refreshableJob.IsProgressing = false;
         refreshableJob.Progress.Finish();
@@ -485,6 +478,5 @@
       try {
         return PersistenceUtil.Deserialize<ItemTask>(taskData.Data);
-      }
-      catch {
+      } catch {
         return null;
       }
@@ -497,6 +489,5 @@
     public static void TryAndRepeat(Action action, int repetitions, string errorMessage, ILog log = null) {
       while (true) {
-        try { action(); return; }
-        catch (Exception e) {
+        try { action(); return; } catch (Exception e) {
           if (repetitions == 0) throw new HiveException(errorMessage, e);
           if (log != null) log.LogMessage(string.Format("{0}: {1} - will try again!", errorMessage, e.ToString()));
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveServiceLocator.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveServiceLocator.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveServiceLocator.cs	(revision 14927)
@@ -87,6 +87,5 @@
           WorkingEndpoint = endpointConfigurationName;
           return cl;
-        }
-        catch (EndpointNotFoundException exc) {
+        } catch (EndpointNotFoundException exc) {
           exception = exc;
           EndpointRetries++;
@@ -114,10 +113,8 @@
       try {
         return call(client);
-      }
-      finally {
+      } finally {
         try {
           client.Close();
-        }
-        catch (Exception) {
+        } catch (Exception) {
           client.Abort();
         }
@@ -131,10 +128,8 @@
       try {
         call(client);
-      }
-      finally {
+      } finally {
         try {
           client.Close();
-        }
-        catch (Exception) {
+        } catch (Exception) {
           client.Abort();
         }
@@ -146,6 +141,5 @@
         try {
           client.Close();
-        }
-        catch (Exception) {
+        } catch (Exception) {
           client.Abort();
         }
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveTasks/HiveTask.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveTasks/HiveTask.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveTasks/HiveTask.cs	(revision 14927)
@@ -29,5 +29,5 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Persistence;
 using HeuristicLab.PluginInfrastructure;
 
@@ -35,5 +35,5 @@
 
   [Item("Hive Task", "Represents a hive task.")]
-  [StorableClass]
+  [StorableType("0bf8fae8-e53b-4eed-a29a-fd73d8eaad6e")]
   public class HiveTask : NamedItem, IItemTree<HiveTask>, IDisposable {
     protected static object locker = new object();
@@ -87,6 +87,5 @@
           try {
             childHiveTasks.Clear();
-          }
-          finally { childHiveTasksLock.ExitWriteLock(); }
+          } finally { childHiveTasksLock.ExitWriteLock(); }
         }
         if (itemTask != value) {
@@ -96,6 +95,5 @@
             itemTask = value;
             RegisterItemTaskEvents();
-          }
-          finally { itemTaskLock.ExitWriteLock(); }
+          } finally { itemTaskLock.ExitWriteLock(); }
           OnItemTaskChanged();
           IsFinishedTaskDownloaded = true;
@@ -133,6 +131,5 @@
               hiveJob.IsControllable = value;
             }
-          }
-          finally {
+          } finally {
             childHiveTasksLock.ExitReadLock();
           }
@@ -148,6 +145,5 @@
         try {
           return childHiveTasks.AsReadOnly();
-        }
-        finally { childHiveTasksLock.ExitReadLock(); }
+        } finally { childHiveTasksLock.ExitReadLock(); }
       }
     }
@@ -194,6 +190,5 @@
       try {
         this.ItemTask = PersistenceUtil.Deserialize<ItemTask>(taskData.Data);
-      }
-      catch {
+      } catch {
         this.ItemTask = null;
       }
@@ -210,6 +205,5 @@
       try {
         this.childHiveTasks = cloner.Clone(original.childHiveTasks);
-      }
-      finally { original.childHiveTasksLock.ExitReadLock(); }
+      } finally { original.childHiveTasksLock.ExitReadLock(); }
       this.syncTasksWithOptimizers = original.syncTasksWithOptimizers;
       this.isFinishedTaskDownloaded = original.isFinishedTaskDownloaded;
@@ -260,6 +254,5 @@
       try {
         this.childHiveTasks.Add(hiveTask);
-      }
-      finally { childHiveTasksLock.ExitWriteLock(); }
+      } finally { childHiveTasksLock.ExitWriteLock(); }
     }
 
@@ -379,6 +372,5 @@
         }
         return tasks;
-      }
-      finally { childHiveTasksLock.ExitReadLock(); }
+      } finally { childHiveTasksLock.ExitReadLock(); }
     }
 
@@ -394,6 +386,5 @@
         }
         return null;
-      }
-      finally { childHiveTasksLock.ExitWriteLock(); }
+      } finally { childHiveTasksLock.ExitWriteLock(); }
     }
 
@@ -412,6 +403,5 @@
               return result;
           }
-        }
-        finally { childHiveTasksLock.ExitReadLock(); }
+        } finally { childHiveTasksLock.ExitReadLock(); }
       }
       return null;
@@ -428,6 +418,5 @@
           child.RemoveByTaskId(taskId);
         }
-      }
-      finally { childHiveTasksLock.ExitWriteLock(); }
+      } finally { childHiveTasksLock.ExitWriteLock(); }
     }
 
@@ -482,6 +471,5 @@
             HiveServiceLocator.Instance.CallHiveService(s => s.PauseTask(child.task.Id));
           }
-        }
-        finally { childHiveTasksLock.ExitReadLock(); }
+        } finally { childHiveTasksLock.ExitReadLock(); }
       } else {
         HiveServiceLocator.Instance.CallHiveService(s => s.PauseTask(this.task.Id));
@@ -496,6 +484,5 @@
             HiveServiceLocator.Instance.CallHiveService(s => s.StopTask(child.task.Id));
           }
-        }
-        finally { childHiveTasksLock.ExitReadLock(); }
+        } finally { childHiveTasksLock.ExitReadLock(); }
       } else {
         HiveServiceLocator.Instance.CallHiveService(s => s.StopTask(this.task.Id));
@@ -541,5 +528,5 @@
 
   [Item("Hive Task", "Represents a hive task.")]
-  [StorableClass]
+  [StorableType("ca112124-bb35-42fa-b2b7-e6367980eb8c")]
   public class HiveTask<T> : HiveTask where T : ItemTask {
 
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveTasks/OptimizerHiveTask.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveTasks/OptimizerHiveTask.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/HiveTasks/OptimizerHiveTask.cs	(revision 14927)
@@ -91,6 +91,5 @@
           }
         }
-      }
-      finally {
+      } finally {
         childHiveTasksLock.ExitWriteLock();
       }
@@ -151,6 +150,5 @@
             }
           }
-        }
-        finally { childHiveTasksLock.ExitWriteLock(); }
+        } finally { childHiveTasksLock.ExitWriteLock(); }
       }
     }
@@ -167,6 +165,5 @@
             }
           }
-        }
-        finally { childHiveTasksLock.ExitWriteLock(); }
+        } finally { childHiveTasksLock.ExitWriteLock(); }
       }
     }
@@ -178,6 +175,5 @@
             this.childHiveTasks.Remove(this.GetChildByOptimizer(item.Value));
           }
-        }
-        finally { childHiveTasksLock.ExitWriteLock(); }
+        } finally { childHiveTasksLock.ExitWriteLock(); }
       }
     }
@@ -189,6 +185,5 @@
             this.childHiveTasks.Remove(this.GetChildByOptimizer(item.Value));
           }
-        }
-        finally { childHiveTasksLock.ExitWriteLock(); }
+        } finally { childHiveTasksLock.ExitWriteLock(); }
       }
     }
@@ -256,6 +251,5 @@
           }
         }
-      }
-      finally {
+      } finally {
         itemTaskLock.ExitWriteLock();
       }
@@ -284,6 +278,5 @@
           }
         }
-      }
-      finally {
+      } finally {
         itemTaskLock.ExitWriteLock();
       }
@@ -310,6 +303,5 @@
           child.SetIndexInParentOptimizerList(this);
         }
-      }
-      finally { childHiveTasksLock.ExitReadLock(); }
+      } finally { childHiveTasksLock.ExitReadLock(); }
     }
 
@@ -382,6 +374,5 @@
         }
         return null;
-      }
-      finally { childHiveTasksLock.ExitReadLock(); }
+      } finally { childHiveTasksLock.ExitReadLock(); }
     }
 
@@ -394,6 +385,5 @@
         }
         return null;
-      }
-      finally { childHiveTasksLock.ExitReadLock(); }
+      } finally { childHiveTasksLock.ExitReadLock(); }
     }
 
@@ -402,6 +392,5 @@
       try {
         action();
-      }
-      finally {
+      } finally {
         itemTaskLock.ExitReadLock();
       }
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/JobResultPoller.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/JobResultPoller.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/JobResultPoller.cs	(revision 14927)
@@ -96,6 +96,5 @@
           IsPolling = false;
           return;
-        }
-        catch (Exception e) {
+        } catch (Exception e) {
           OnExceptionOccured(e);
           if (!autoResumeOnException) {
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveItemCollection.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveItemCollection.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveItemCollection.cs	(revision 14927)
@@ -70,6 +70,5 @@
           HiveClient.Delete(item);
           removed.Add(item);
-        }
-        catch (Exception ex) {
+        } catch (Exception ex) {
           exception = ex;
           notremoved.Add(item);
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveServiceClient.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveServiceClient.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveServiceClient.cs	(revision 14927)
@@ -422,76 +422,63 @@
         }
     }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="Resource", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
-    [System.SerializableAttribute()]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Slave))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
-    public partial class Resource : HeuristicLab.Clients.Hive.NamedHiveItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private int HbIntervalField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Nullable<System.Guid> OwnerUserIdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Nullable<System.Guid> ParentResourceIdField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public int HbInterval
-        {
-            get
-            {
-                return this.HbIntervalField;
-            }
-            set
-            {
-                if ((this.HbIntervalField.Equals(value) != true))
-                {
-                    this.HbIntervalField = value;
-                    this.RaisePropertyChanged("HbInterval");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Nullable<System.Guid> OwnerUserId
-        {
-            get
-            {
-                return this.OwnerUserIdField;
-            }
-            set
-            {
-                if ((this.OwnerUserIdField.Equals(value) != true))
-                {
-                    this.OwnerUserIdField = value;
-                    this.RaisePropertyChanged("OwnerUserId");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Nullable<System.Guid> ParentResourceId
-        {
-            get
-            {
-                return this.ParentResourceIdField;
-            }
-            set
-            {
-                if ((this.ParentResourceIdField.Equals(value) != true))
-                {
-                    this.ParentResourceIdField = value;
-                    this.RaisePropertyChanged("ParentResourceId");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Resource", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
+  [System.SerializableAttribute()]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Slave))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
+  public partial class Resource : HeuristicLab.Clients.Hive.NamedHiveItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private int HbIntervalField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Nullable<System.Guid> OwnerUserIdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Nullable<System.Guid> ParentResourceIdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public int HbInterval {
+      get {
+        return this.HbIntervalField;
+      }
+      set {
+        if ((this.HbIntervalField.Equals(value) != true)) {
+          this.HbIntervalField = value;
+          this.RaisePropertyChanged("HbInterval");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Nullable<System.Guid> OwnerUserId {
+      get {
+        return this.OwnerUserIdField;
+      }
+      set {
+        if ((this.OwnerUserIdField.Equals(value) != true)) {
+          this.OwnerUserIdField = value;
+          this.RaisePropertyChanged("OwnerUserId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Nullable<System.Guid> ParentResourceId {
+      get {
+        return this.ParentResourceIdField;
+      }
+      set {
+        if ((this.ParentResourceIdField.Equals(value) != true)) {
+          this.ParentResourceIdField = value;
+          this.RaisePropertyChanged("ParentResourceId");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     [System.Runtime.Serialization.DataContractAttribute(Name="Slave", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
@@ -740,14 +727,13 @@
         }
     }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="SlaveGroup", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
-    [System.SerializableAttribute()]
-    public partial class SlaveGroup : HeuristicLab.Clients.Hive.Resource
-    {
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "SlaveGroup", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
+  [System.SerializableAttribute()]
+  public partial class SlaveGroup : HeuristicLab.Clients.Hive.Resource {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     [System.Runtime.Serialization.DataContractAttribute(Name="Plugin", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
@@ -992,74 +978,61 @@
         }
     }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="ResourcePermission", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
-    [System.SerializableAttribute()]
-    public partial class ResourcePermission : HeuristicLab.Clients.Hive.HiveItem
-    {
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid GrantedByUserIdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid GrantedUserIdField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid ResourceIdField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid GrantedByUserId
-        {
-            get
-            {
-                return this.GrantedByUserIdField;
-            }
-            set
-            {
-                if ((this.GrantedByUserIdField.Equals(value) != true))
-                {
-                    this.GrantedByUserIdField = value;
-                    this.RaisePropertyChanged("GrantedByUserId");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid GrantedUserId
-        {
-            get
-            {
-                return this.GrantedUserIdField;
-            }
-            set
-            {
-                if ((this.GrantedUserIdField.Equals(value) != true))
-                {
-                    this.GrantedUserIdField = value;
-                    this.RaisePropertyChanged("GrantedUserId");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid ResourceId
-        {
-            get
-            {
-                return this.ResourceIdField;
-            }
-            set
-            {
-                if ((this.ResourceIdField.Equals(value) != true))
-                {
-                    this.ResourceIdField = value;
-                    this.RaisePropertyChanged("ResourceId");
-                }
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "ResourcePermission", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
+  [System.SerializableAttribute()]
+  public partial class ResourcePermission : HeuristicLab.Clients.Hive.HiveItem {
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid GrantedByUserIdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid GrantedUserIdField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid ResourceIdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid GrantedByUserId {
+      get {
+        return this.GrantedByUserIdField;
+      }
+      set {
+        if ((this.GrantedByUserIdField.Equals(value) != true)) {
+          this.GrantedByUserIdField = value;
+          this.RaisePropertyChanged("GrantedByUserId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid GrantedUserId {
+      get {
+        return this.GrantedUserIdField;
+      }
+      set {
+        if ((this.GrantedUserIdField.Equals(value) != true)) {
+          this.GrantedUserIdField = value;
+          this.RaisePropertyChanged("GrantedUserId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid ResourceId {
+      get {
+        return this.ResourceIdField;
+      }
+      set {
+        if ((this.ResourceIdField.Equals(value) != true)) {
+          this.ResourceIdField = value;
+          this.RaisePropertyChanged("ResourceId");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     [System.Runtime.Serialization.DataContractAttribute(Name="Downtime", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
@@ -1553,21 +1526,20 @@
         }
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="Command", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
-    public enum Command : int
-    {
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Stop = 0,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Abort = 1,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Pause = 2,
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Command", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
+  public enum Command : int {
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Stop = 0,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Abort = 1,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Pause = 2,
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     [System.Runtime.Serialization.DataContractAttribute(Name="TaskState", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
     public enum TaskState : int
@@ -1598,21 +1570,20 @@
         Failed = 7,
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="Permission", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
-    public enum Permission : int
-    {
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        NotAllowed = 0,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Read = 1,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Full = 2,
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Permission", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
+  public enum Permission : int {
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    NotAllowed = 0,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Read = 1,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Full = 2,
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     [System.Runtime.Serialization.DataContractAttribute(Name="CpuArchitecture", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
     public enum CpuArchitecture : int
@@ -1625,21 +1596,20 @@
         x64 = 1,
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="SlaveState", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
-    public enum SlaveState : int
-    {
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Idle = 0,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Calculating = 1,
-        
-        [System.Runtime.Serialization.EnumMemberAttribute()]
-        Offline = 2,
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "SlaveState", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
+  public enum SlaveState : int {
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Idle = 0,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Calculating = 1,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Offline = 2,
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
     [System.Runtime.Serialization.DataContractAttribute(Name="DowntimeType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataAccess")]
     public enum DowntimeType : int
@@ -1993,106 +1963,95 @@
             }
         }
-        
-        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-        [System.Runtime.Serialization.DataContractAttribute(Name="MessageContainer.MessageType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive")]
-        public enum MessageType : int
-        {
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            CalculateTask = 0,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            StopTask = 1,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            StopAll = 2,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            AbortTask = 3,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            AbortAll = 4,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            PauseTask = 5,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            PauseAll = 6,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            Restart = 7,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            Sleep = 8,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            ShutdownSlave = 9,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            SayHello = 10,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            NewHBInterval = 11,
-            
-            [System.Runtime.Serialization.EnumMemberAttribute()]
-            ShutdownComputer = 12,
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
+
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="PluginAlreadyExistsFault", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive")]
-    [System.SerializableAttribute()]
-    public partial class PluginAlreadyExistsFault : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-    {
-        
-        [System.NonSerializedAttribute()]
-        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-        
-        [System.Runtime.Serialization.OptionalFieldAttribute()]
-        private System.Guid IdField;
-        
-        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
-        {
-            get
-            {
-                return this.extensionDataField;
-            }
-            set
-            {
-                this.extensionDataField = value;
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Id
-        {
-            get
-            {
-                return this.IdField;
-            }
-            set
-            {
-                if ((this.IdField.Equals(value) != true))
-                {
-                    this.IdField = value;
-                    this.RaisePropertyChanged("Id");
-                }
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name = "MessageContainer.MessageType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive")]
+    public enum MessageType : int {
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      CalculateTask = 0,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      StopTask = 1,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      StopAll = 2,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      AbortTask = 3,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      AbortAll = 4,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      PauseTask = 5,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      PauseAll = 6,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      Restart = 7,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      Sleep = 8,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      ShutdownSlave = 9,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      SayHello = 10,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      NewHBInterval = 11,
+
+      [System.Runtime.Serialization.EnumMemberAttribute()]
+      ShutdownComputer = 12,
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "PluginAlreadyExistsFault", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive")]
+  [System.SerializableAttribute()]
+  public partial class PluginAlreadyExistsFault : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    [System.NonSerializedAttribute()]
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    [System.Runtime.Serialization.OptionalFieldAttribute()]
+    private System.Guid IdField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid Id {
+      get {
+        return this.IdField;
+      }
+      set {
+        if ((this.IdField.Equals(value) != true)) {
+          this.IdField = value;
+          this.RaisePropertyChanged("Id");
+        }
+      }
+    }
+
+    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+    protected void RaisePropertyChanged(string propertyName) {
+      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+      if ((propertyChanged != null)) {
+        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+      }
+    }
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
     [System.ServiceModel.ServiceContractAttribute(ConfigurationName="HeuristicLab.Clients.Hive.IHiveService")]
     public interface IHiveService
@@ -2256,11 +2215,10 @@
         System.Collections.Generic.List<HeuristicLab.Clients.Hive.UserPriority> GetUserPriorities();
     }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-    public interface IHiveServiceChannel : HeuristicLab.Clients.Hive.IHiveService, System.ServiceModel.IClientChannel
-    {
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public interface IHiveServiceChannel : HeuristicLab.Clients.Hive.IHiveService, System.ServiceModel.IClientChannel {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
     public partial class HiveServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.Hive.IHiveService>, HeuristicLab.Clients.Hive.IHiveService
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/StateLogList.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/StateLogList.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/StateLogList.cs	(revision 14927)
@@ -23,8 +23,8 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Persistence;
 
 namespace HeuristicLab.Clients.Hive {
-  [StorableClass]
+  [StorableType("c191d8c7-8edb-4d0c-82f1-6e24c18f4ea4")]
   public class StateLogList : ItemList<StateLog> {
 
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/StateLogListList.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/StateLogListList.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/StateLogListList.cs	(revision 14927)
@@ -23,8 +23,8 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Persistence;
 
 namespace HeuristicLab.Clients.Hive {
-  [StorableClass]
+  [StorableType("286bdb7e-a1bd-42d9-93c7-4848e92eb869")]
   public class StateLogListList : ItemList<StateLogList> {
 
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/TaskDownloader.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/TaskDownloader.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/TaskDownloader.cs	(revision 14927)
@@ -40,6 +40,5 @@
           resultsLock.EnterReadLock();
           return results.Count == taskIds.Count();
-        }
-        finally { resultsLock.ExitReadLock(); }
+        } finally { resultsLock.ExitReadLock(); }
       }
     }
@@ -62,6 +61,5 @@
           resultsLock.EnterReadLock();
           return results.Count;
-        }
-        finally { resultsLock.ExitReadLock(); }
+        } finally { resultsLock.ExitReadLock(); }
       }
     }
@@ -72,6 +70,5 @@
           resultsLock.EnterReadLock();
           return results;
-        }
-        finally { resultsLock.ExitReadLock(); }
+        } finally { resultsLock.ExitReadLock(); }
       }
     }
@@ -94,6 +91,5 @@
                 resultsLock.EnterWriteLock();
                 results.Add(localTask.Id, hiveTask);
-              }
-              finally { resultsLock.ExitWriteLock(); }
+              } finally { resultsLock.ExitWriteLock(); }
             }
           });
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/Tasks/EngineTask.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/Tasks/EngineTask.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/Tasks/EngineTask.cs	(revision 14927)
@@ -24,8 +24,8 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Persistence;
 
 namespace HeuristicLab.Clients.Hive {
-  [StorableClass]
+  [StorableType("46eb95f3-99a6-40ca-a50a-4df387a96d55")]
   public class EngineTask : ItemTask {
     public override HiveTask CreateHiveTask() {
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/Tasks/ItemTask.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/Tasks/ItemTask.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/Tasks/ItemTask.cs	(revision 14927)
@@ -26,10 +26,10 @@
 using HeuristicLab.Core;
 using HeuristicLab.Hive;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Persistence;
 using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Clients.Hive {
   [Item("Item Task", "Represents a executable hive task which contains a HeuristicLab Item.")]
-  [StorableClass]
+  [StorableType("a0fe82f7-d030-48a1-9083-9b8cb9a6682f")]
   public abstract class ItemTask : NamedItem, ITask {
     public virtual HiveTask CreateHiveTask() {
Index: branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/Tasks/OptimizerTask.cs
===================================================================
--- branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/Tasks/OptimizerTask.cs	(revision 14926)
+++ branches/PersistenceReintegration/HeuristicLab.Clients.Hive/3.3/Tasks/OptimizerTask.cs	(revision 14927)
@@ -24,9 +24,9 @@
 using HeuristicLab.Core;
 using HeuristicLab.Optimization;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Persistence;
 
 namespace HeuristicLab.Clients.Hive.Jobs {
   [Item("Optimizer Task", "Represents Task which executes a IOptimizer object.")]
-  [StorableClass]
+  [StorableType("4d8607bf-1e84-4c90-872d-1ce743f9e4d8")]
   public class OptimizerTask : ItemTask {
     public override HiveTask CreateHiveTask() {
