Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager/HiveJobClient.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager/HiveJobClient.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ExperimentManager/HiveJobClient.cs	(revision 5779)
@@ -45,4 +45,5 @@
           else if (job.State == JobState.Calculating) return HeuristicLab.Common.Resources.VSImageLibrary.ExecutableStarted;
           else if (job.State == JobState.Transferring) return HeuristicLab.Common.Resources.VSImageLibrary.ExecutableStarted;
+          else if (job.State == JobState.Paused) return HeuristicLab.Common.Resources.VSImageLibrary.ExecutablePaused;
           else if (job.State == JobState.Aborted) return HeuristicLab.Common.Resources.VSImageLibrary.ExecutableStopped;
           else if (job.State == JobState.Failed) return HeuristicLab.Common.Resources.VSImageLibrary.Error;
@@ -604,4 +605,16 @@
     }
     #endregion
+
+    public void Pause() {
+      ServiceLocator.Instance.CallHiveService(s => s.PauseJob(this.job.Id));
+    }
+
+    public void Stop() {
+      ServiceLocator.Instance.CallHiveService(s => s.StopJob(this.job.Id));
+    }
+
+    public void Restart() {
+      ServiceLocator.Instance.CallHiveService(s => s.RestartJob(this.job.Id));
+    }
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HeuristicLab.Clients.Hive-3.4.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HeuristicLab.Clients.Hive-3.4.csproj	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/HeuristicLab.Clients.Hive-3.4.csproj	(revision 5779)
@@ -139,4 +139,5 @@
     <Compile Include="Exceptions\ServiceClientFactoryException.cs" />
     <Compile Include="ServiceClients\Appointment.cs" />
+    <Compile Include="ServiceClients\NamedHiveItem.cs" />
     <Compile Include="ServiceClients\Heartbeat.cs" />
     <Compile Include="ServiceClients\HiveExperimentPermission.cs" />
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Appointment.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Appointment.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Appointment.cs	(revision 5779)
@@ -27,5 +27,6 @@
     public Appointment() { }
 
-    protected Appointment(Appointment original, Cloner cloner) {
+    protected Appointment(Appointment original, Cloner cloner)
+      : base(original, cloner) {
       this.AllDayEvent = original.AllDayEvent;
       this.EndDate = original.EndDate;
@@ -34,5 +35,4 @@
       this.ResourceId = original.ResourceId;
       this.StartDate = original.StartDate;
-      this.Id = original.Id;
     }
 
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveExperiment.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveExperiment.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveExperiment.cs	(revision 5779)
@@ -29,4 +29,5 @@
 
     protected HiveExperiment(HiveExperiment original, Cloner cloner) {
+      cloner.RegisterClonedObject(original, this);
       this.RootJobId = original.RootJobId;
       this.OwnerUserId = original.OwnerUserId;
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveExperimentPermission.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveExperimentPermission.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveExperimentPermission.cs	(revision 5779)
@@ -29,9 +29,5 @@
 
     protected HiveExperimentPermission(HiveExperimentPermission original, Cloner cloner) {
-      /*this.HiveExperimentId = original.HiveExperimentId;
-      this.GrantedUserId = original.GrantedUserId;
-      this.GrantedByUserId = original.GrantedByUserId;
-      this.Permission = original.Permission;
-      this.Id = original.Id;*/
+      cloner.RegisterClonedObject(original, this);
     }
 
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveServiceClient.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveServiceClient.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/HiveServiceClient.cs	(revision 5779)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.1
+//     Runtime Version:4.0.30319.208
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -13,1607 +13,1983 @@
 
   [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "HiveItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Appointment))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.LightweightJob))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.StateLog))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Job))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.PluginData))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.NamedHiveItem))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.HiveExperiment))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Plugin))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Resource))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Slave))]
-  public partial class HiveItem : 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;
-
-
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Appointment", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  public partial class Appointment : HeuristicLab.Clients.Hive.HiveItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private bool AllDayEventField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime EndDateField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private bool RecurringField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid RecurringIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid ResourceIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime StartDateField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool AllDayEvent {
-      get {
-        return this.AllDayEventField;
-      }
-      set {
-        if ((this.AllDayEventField.Equals(value) != true)) {
-          this.AllDayEventField = value;
-          this.RaisePropertyChanged("AllDayEvent");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime EndDate {
-      get {
-        return this.EndDateField;
-      }
-      set {
-        if ((this.EndDateField.Equals(value) != true)) {
-          this.EndDateField = value;
-          this.RaisePropertyChanged("EndDate");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool Recurring {
-      get {
-        return this.RecurringField;
-      }
-      set {
-        if ((this.RecurringField.Equals(value) != true)) {
-          this.RecurringField = value;
-          this.RaisePropertyChanged("Recurring");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid RecurringId {
-      get {
-        return this.RecurringIdField;
-      }
-      set {
-        if ((this.RecurringIdField.Equals(value) != true)) {
-          this.RecurringIdField = value;
-          this.RaisePropertyChanged("RecurringId");
-        }
-      }
-    }
-
-    [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.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime StartDate {
-      get {
-        return this.StartDateField;
-      }
-      set {
-        if ((this.StartDateField.Equals(value) != true)) {
-          this.StartDateField = value;
-          this.RaisePropertyChanged("StartDate");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "LightweightJob", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Job))]
-  public partial class LightweightJob : HeuristicLab.Clients.Hive.HiveItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<System.TimeSpan> ExecutionTimeField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<System.Guid> ParentJobIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private HeuristicLab.Clients.Hive.JobState StateField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Collections.Generic.List<HeuristicLab.Clients.Hive.StateLog> StateLogField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<System.TimeSpan> ExecutionTime {
-      get {
-        return this.ExecutionTimeField;
-      }
-      set {
-        if ((this.ExecutionTimeField.Equals(value) != true)) {
-          this.ExecutionTimeField = value;
-          this.RaisePropertyChanged("ExecutionTime");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<System.Guid> ParentJobId {
-      get {
-        return this.ParentJobIdField;
-      }
-      set {
-        if ((this.ParentJobIdField.Equals(value) != true)) {
-          this.ParentJobIdField = value;
-          this.RaisePropertyChanged("ParentJobId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.Hive.JobState State {
-      get {
-        return this.StateField;
-      }
-      set {
-        if ((this.StateField.Equals(value) != true)) {
-          this.StateField = value;
-          this.RaisePropertyChanged("State");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.StateLog> StateLog {
-      get {
-        return this.StateLogField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.StateLogField, value) != true)) {
-          this.StateLogField = value;
-          this.RaisePropertyChanged("StateLog");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "StateLog", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  public partial class StateLog : HeuristicLab.Clients.Hive.HiveItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime DateTimeField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string ExceptionField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid JobIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<System.Guid> SlaveIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private HeuristicLab.Clients.Hive.JobState StateField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<System.Guid> UserIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime DateTime {
-      get {
-        return this.DateTimeField;
-      }
-      set {
-        if ((this.DateTimeField.Equals(value) != true)) {
-          this.DateTimeField = value;
-          this.RaisePropertyChanged("DateTime");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Exception {
-      get {
-        return this.ExceptionField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ExceptionField, value) != true)) {
-          this.ExceptionField = value;
-          this.RaisePropertyChanged("Exception");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid JobId {
-      get {
-        return this.JobIdField;
-      }
-      set {
-        if ((this.JobIdField.Equals(value) != true)) {
-          this.JobIdField = value;
-          this.RaisePropertyChanged("JobId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<System.Guid> SlaveId {
-      get {
-        return this.SlaveIdField;
-      }
-      set {
-        if ((this.SlaveIdField.Equals(value) != true)) {
-          this.SlaveIdField = value;
-          this.RaisePropertyChanged("SlaveId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.Hive.JobState State {
-      get {
-        return this.StateField;
-      }
-      set {
-        if ((this.StateField.Equals(value) != true)) {
-          this.StateField = value;
-          this.RaisePropertyChanged("State");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<System.Guid> UserId {
-      get {
-        return this.UserIdField;
-      }
-      set {
-        if ((this.UserIdField.Equals(value) != true)) {
-          this.UserIdField = value;
-          this.RaisePropertyChanged("UserId");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Job", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  public partial class Job : HeuristicLab.Clients.Hive.LightweightJob {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private int CoresNeededField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private bool FinishWhenChildJobsFinishedField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private bool IsParentJobField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<System.DateTime> LastHeartbeatField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private int MemoryNeededField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Collections.Generic.List<System.Guid> PluginsNeededIdsField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private int PriorityField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public int CoresNeeded {
-      get {
-        return this.CoresNeededField;
-      }
-      set {
-        if ((this.CoresNeededField.Equals(value) != true)) {
-          this.CoresNeededField = value;
-          this.RaisePropertyChanged("CoresNeeded");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool FinishWhenChildJobsFinished {
-      get {
-        return this.FinishWhenChildJobsFinishedField;
-      }
-      set {
-        if ((this.FinishWhenChildJobsFinishedField.Equals(value) != true)) {
-          this.FinishWhenChildJobsFinishedField = value;
-          this.RaisePropertyChanged("FinishWhenChildJobsFinished");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool IsParentJob {
-      get {
-        return this.IsParentJobField;
-      }
-      set {
-        if ((this.IsParentJobField.Equals(value) != true)) {
-          this.IsParentJobField = value;
-          this.RaisePropertyChanged("IsParentJob");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<System.DateTime> LastHeartbeat {
-      get {
-        return this.LastHeartbeatField;
-      }
-      set {
-        if ((this.LastHeartbeatField.Equals(value) != true)) {
-          this.LastHeartbeatField = value;
-          this.RaisePropertyChanged("LastHeartbeat");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public int MemoryNeeded {
-      get {
-        return this.MemoryNeededField;
-      }
-      set {
-        if ((this.MemoryNeededField.Equals(value) != true)) {
-          this.MemoryNeededField = value;
-          this.RaisePropertyChanged("MemoryNeeded");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<System.Guid> PluginsNeededIds {
-      get {
-        return this.PluginsNeededIdsField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.PluginsNeededIdsField, value) != true)) {
-          this.PluginsNeededIdsField = value;
-          this.RaisePropertyChanged("PluginsNeededIds");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public int Priority {
-      get {
-        return this.PriorityField;
-      }
-      set {
-        if ((this.PriorityField.Equals(value) != true)) {
-          this.PriorityField = value;
-          this.RaisePropertyChanged("Priority");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "PluginData", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  public partial class PluginData : HeuristicLab.Clients.Hive.HiveItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private byte[] DataField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string FileNameField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid PluginIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public byte[] Data {
-      get {
-        return this.DataField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.DataField, value) != true)) {
-          this.DataField = value;
-          this.RaisePropertyChanged("Data");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string FileName {
-      get {
-        return this.FileNameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.FileNameField, value) != true)) {
-          this.FileNameField = value;
-          this.RaisePropertyChanged("FileName");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid PluginId {
-      get {
-        return this.PluginIdField;
-      }
-      set {
-        if ((this.PluginIdField.Equals(value) != true)) {
-          this.PluginIdField = value;
-          this.RaisePropertyChanged("PluginId");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "NamedHiveItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.HiveExperiment))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Plugin))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Resource))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Slave))]
-  public partial class NamedHiveItem : HeuristicLab.Clients.Hive.HiveItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string DescriptionField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string NameField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Description {
-      get {
-        return this.DescriptionField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.DescriptionField, value) != true)) {
-          this.DescriptionField = value;
-          this.RaisePropertyChanged("Description");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Name {
-      get {
-        return this.NameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.NameField, value) != true)) {
-          this.NameField = value;
-          this.RaisePropertyChanged("Name");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "HiveExperiment", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  public partial class HiveExperiment : HeuristicLab.Clients.Hive.NamedHiveItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime DateCreatedField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<System.DateTime> LastAccessedField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid OwnerUserIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string ResourceNamesField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid RootJobIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime DateCreated {
-      get {
-        return this.DateCreatedField;
-      }
-      set {
-        if ((this.DateCreatedField.Equals(value) != true)) {
-          this.DateCreatedField = value;
-          this.RaisePropertyChanged("DateCreated");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<System.DateTime> LastAccessed {
-      get {
-        return this.LastAccessedField;
-      }
-      set {
-        if ((this.LastAccessedField.Equals(value) != true)) {
-          this.LastAccessedField = value;
-          this.RaisePropertyChanged("LastAccessed");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public 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 string ResourceNames {
-      get {
-        return this.ResourceNamesField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ResourceNamesField, value) != true)) {
-          this.ResourceNamesField = value;
-          this.RaisePropertyChanged("ResourceNames");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid RootJobId {
-      get {
-        return this.RootJobIdField;
-      }
-      set {
-        if ((this.RootJobIdField.Equals(value) != true)) {
-          this.RootJobIdField = value;
-          this.RaisePropertyChanged("RootJobId");
-        }
-      }
-    }
-  }
-
-  [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.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  public partial class Plugin : HeuristicLab.Clients.Hive.NamedHiveItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime DateCreatedField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private bool IsLocalField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid UserIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Version VersionField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime DateCreated {
-      get {
-        return this.DateCreatedField;
-      }
-      set {
-        if ((this.DateCreatedField.Equals(value) != true)) {
-          this.DateCreatedField = value;
-          this.RaisePropertyChanged("DateCreated");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool IsLocal {
-      get {
-        return this.IsLocalField;
-      }
-      set {
-        if ((this.IsLocalField.Equals(value) != true)) {
-          this.IsLocalField = value;
-          this.RaisePropertyChanged("IsLocal");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid UserId {
-      get {
-        return this.UserIdField;
-      }
-      set {
-        if ((this.UserIdField.Equals(value) != true)) {
-          this.UserIdField = value;
-          this.RaisePropertyChanged("UserId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Version Version {
-      get {
-        return this.VersionField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.VersionField, value) != true)) {
-          this.VersionField = value;
-          this.RaisePropertyChanged("Version");
-        }
-      }
-    }
-  }
-
-  [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.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Slave))]
-  public partial class Resource : HeuristicLab.Clients.Hive.NamedHiveItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<System.Guid> ParentResourceIdField;
-
-    [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 = "SlaveGroup", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [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 = "Slave", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  public partial class Slave : HeuristicLab.Clients.Hive.Resource {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<int> CoresField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private HeuristicLab.Clients.Hive.CpuArchitecture CpuArchitectureField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<int> CpuSpeedField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<int> FreeCoresField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<int> FreeMemoryField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private bool IsAllowedToCalculateField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<System.DateTime> LastHeartbeatField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Nullable<int> MemoryField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string OperatingSystemField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private HeuristicLab.Clients.Hive.SlaveState SlaveStateField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<int> Cores {
-      get {
-        return this.CoresField;
-      }
-      set {
-        if ((this.CoresField.Equals(value) != true)) {
-          this.CoresField = value;
-          this.RaisePropertyChanged("Cores");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.Hive.CpuArchitecture CpuArchitecture {
-      get {
-        return this.CpuArchitectureField;
-      }
-      set {
-        if ((this.CpuArchitectureField.Equals(value) != true)) {
-          this.CpuArchitectureField = value;
-          this.RaisePropertyChanged("CpuArchitecture");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<int> CpuSpeed {
-      get {
-        return this.CpuSpeedField;
-      }
-      set {
-        if ((this.CpuSpeedField.Equals(value) != true)) {
-          this.CpuSpeedField = value;
-          this.RaisePropertyChanged("CpuSpeed");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<int> FreeCores {
-      get {
-        return this.FreeCoresField;
-      }
-      set {
-        if ((this.FreeCoresField.Equals(value) != true)) {
-          this.FreeCoresField = value;
-          this.RaisePropertyChanged("FreeCores");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<int> FreeMemory {
-      get {
-        return this.FreeMemoryField;
-      }
-      set {
-        if ((this.FreeMemoryField.Equals(value) != true)) {
-          this.FreeMemoryField = value;
-          this.RaisePropertyChanged("FreeMemory");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool IsAllowedToCalculate {
-      get {
-        return this.IsAllowedToCalculateField;
-      }
-      set {
-        if ((this.IsAllowedToCalculateField.Equals(value) != true)) {
-          this.IsAllowedToCalculateField = value;
-          this.RaisePropertyChanged("IsAllowedToCalculate");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<System.DateTime> LastHeartbeat {
-      get {
-        return this.LastHeartbeatField;
-      }
-      set {
-        if ((this.LastHeartbeatField.Equals(value) != true)) {
-          this.LastHeartbeatField = value;
-          this.RaisePropertyChanged("LastHeartbeat");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Nullable<int> Memory {
-      get {
-        return this.MemoryField;
-      }
-      set {
-        if ((this.MemoryField.Equals(value) != true)) {
-          this.MemoryField = value;
-          this.RaisePropertyChanged("Memory");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string OperatingSystem {
-      get {
-        return this.OperatingSystemField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.OperatingSystemField, value) != true)) {
-          this.OperatingSystemField = value;
-          this.RaisePropertyChanged("OperatingSystem");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.Hive.SlaveState SlaveState {
-      get {
-        return this.SlaveStateField;
-      }
-      set {
-        if ((this.SlaveStateField.Equals(value) != true)) {
-          this.SlaveStateField = value;
-          this.RaisePropertyChanged("SlaveState");
-        }
-      }
-    }
-  }
-
-  [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.Common.DataTra" +
-      "nsfer")]
-  public enum CpuArchitecture : int {
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    x86 = 0,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    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.Common.DataTra" +
-      "nsfer")]
-  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 = "JobState", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  public enum JobState : int {
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Offline = 0,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Waiting = 1,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Transferring = 2,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Calculating = 3,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Paused = 4,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Finished = 5,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Aborted = 6,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Failed = 7,
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "JobData", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  public partial class JobData : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    [System.NonSerializedAttribute()]
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private byte[] DataField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid JobIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime LastUpdateField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public byte[] Data {
-      get {
-        return this.DataField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.DataField, value) != true)) {
-          this.DataField = value;
-          this.RaisePropertyChanged("Data");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid JobId {
-      get {
-        return this.JobIdField;
-      }
-      set {
-        if ((this.JobIdField.Equals(value) != true)) {
-          this.JobIdField = value;
-          this.RaisePropertyChanged("JobId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime LastUpdate {
-      get {
-        return this.LastUpdateField;
-      }
-      set {
-        if ((this.LastUpdateField.Equals(value) != true)) {
-          this.LastUpdateField = value;
-          this.RaisePropertyChanged("LastUpdate");
-        }
-      }
-    }
-
-    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.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Heartbeat", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
-      "nsfer")]
-  [System.SerializableAttribute()]
-  public partial class Heartbeat : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    [System.NonSerializedAttribute()]
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private bool AssignJobField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private int FreeCoresField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private int FreeMemoryField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Collections.Generic.Dictionary<System.Guid, System.TimeSpan> JobProgressField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid SlaveIdField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool AssignJob {
-      get {
-        return this.AssignJobField;
-      }
-      set {
-        if ((this.AssignJobField.Equals(value) != true)) {
-          this.AssignJobField = value;
-          this.RaisePropertyChanged("AssignJob");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public int FreeCores {
-      get {
-        return this.FreeCoresField;
-      }
-      set {
-        if ((this.FreeCoresField.Equals(value) != true)) {
-          this.FreeCoresField = value;
-          this.RaisePropertyChanged("FreeCores");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public int FreeMemory {
-      get {
-        return this.FreeMemoryField;
-      }
-      set {
-        if ((this.FreeMemoryField.Equals(value) != true)) {
-          this.FreeMemoryField = value;
-          this.RaisePropertyChanged("FreeMemory");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.Dictionary<System.Guid, System.TimeSpan> JobProgress {
-      get {
-        return this.JobProgressField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.JobProgressField, value) != true)) {
-          this.JobProgressField = value;
-          this.RaisePropertyChanged("JobProgress");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid SlaveId {
-      get {
-        return this.SlaveIdField;
-      }
-      set {
-        if ((this.SlaveIdField.Equals(value) != true)) {
-          this.SlaveIdField = value;
-          this.RaisePropertyChanged("SlaveId");
-        }
-      }
-    }
-
-    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.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "MessageContainer", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common")]
-  [System.SerializableAttribute()]
-  public partial class MessageContainer : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    [System.NonSerializedAttribute()]
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid JobIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private HeuristicLab.Clients.Hive.MessageContainer.MessageType MessageField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid JobId {
-      get {
-        return this.JobIdField;
-      }
-      set {
-        if ((this.JobIdField.Equals(value) != true)) {
-          this.JobIdField = value;
-          this.RaisePropertyChanged("JobId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.Hive.MessageContainer.MessageType Message {
-      get {
-        return this.MessageField;
-      }
-      set {
-        if ((this.MessageField.Equals(value) != true)) {
-          this.MessageField = value;
-          this.RaisePropertyChanged("Message");
-        }
-      }
-    }
-
-    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.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name = "MessageContainer.MessageType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common")]
-    public enum MessageType : int {
-
-      [System.Runtime.Serialization.EnumMemberAttribute()]
-      CalculateJob = 0,
-
-      [System.Runtime.Serialization.EnumMemberAttribute()]
-      StopJob = 1,
-
-      [System.Runtime.Serialization.EnumMemberAttribute()]
-      StopAll = 2,
-
-      [System.Runtime.Serialization.EnumMemberAttribute()]
-      AbortJob = 3,
-
-      [System.Runtime.Serialization.EnumMemberAttribute()]
-      AbortAll = 4,
-
-      [System.Runtime.Serialization.EnumMemberAttribute()]
-      PauseJob = 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()]
-      AddChildJob = 11,
-
-      [System.Runtime.Serialization.EnumMemberAttribute()]
-      GetChildJobs = 12,
-
-      [System.Runtime.Serialization.EnumMemberAttribute()]
-      DeleteChildJobs = 13,
-    }
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-  [System.ServiceModel.ServiceContractAttribute(ConfigurationName = "HeuristicLab.Clients.Hive.IHiveService")]
-  public interface IHiveService {
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetSlave", ReplyAction = "http://tempuri.org/IHiveService/GetSlaveResponse")]
-    HeuristicLab.Clients.Hive.Slave GetSlave(System.Guid slaveId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetSlaveGroup", ReplyAction = "http://tempuri.org/IHiveService/GetSlaveGroupResponse")]
-    HeuristicLab.Clients.Hive.SlaveGroup GetSlaveGroup(System.Guid slaveGroupId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetSlaves", ReplyAction = "http://tempuri.org/IHiveService/GetSlavesResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.Slave> GetSlaves();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetSlaveGroups", ReplyAction = "http://tempuri.org/IHiveService/GetSlaveGroupsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.SlaveGroup> GetSlaveGroups();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/UpdateSlave", ReplyAction = "http://tempuri.org/IHiveService/UpdateSlaveResponse")]
-    void UpdateSlave(HeuristicLab.Clients.Hive.Slave slave);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/UpdateSlaveGroup", ReplyAction = "http://tempuri.org/IHiveService/UpdateSlaveGroupResponse")]
-    void UpdateSlaveGroup(HeuristicLab.Clients.Hive.SlaveGroup slaveGroup);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/DeleteSlave", ReplyAction = "http://tempuri.org/IHiveService/DeleteSlaveResponse")]
-    void DeleteSlave(System.Guid slaveId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/DeleteSlaveGroup", ReplyAction = "http://tempuri.org/IHiveService/DeleteSlaveGroupResponse")]
-    void DeleteSlaveGroup(System.Guid slaveGroupId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AddResourceToGroup", ReplyAction = "http://tempuri.org/IHiveService/AddResourceToGroupResponse")]
-    void AddResourceToGroup(System.Guid slaveGroupId, System.Guid resourceId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/RemoveResourceFromGroup", ReplyAction = "http://tempuri.org/IHiveService/RemoveResourceFromGroupResponse")]
-    void RemoveResourceFromGroup(System.Guid slaveGroupId, System.Guid resourceId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetResourceId", ReplyAction = "http://tempuri.org/IHiveService/GetResourceIdResponse")]
-    System.Guid GetResourceId(string resourceName);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/TriggerLifecycle", ReplyAction = "http://tempuri.org/IHiveService/TriggerLifecycleResponse")]
-    void TriggerLifecycle(bool force);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AddAppointment", ReplyAction = "http://tempuri.org/IHiveService/AddAppointmentResponse")]
-    System.Guid AddAppointment(HeuristicLab.Clients.Hive.Appointment appointment);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/DeleteAppointment", ReplyAction = "http://tempuri.org/IHiveService/DeleteAppointmentResponse")]
-    void DeleteAppointment(System.Guid appointmentId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/UpdateAppointment", ReplyAction = "http://tempuri.org/IHiveService/UpdateAppointmentResponse")]
-    void UpdateAppointment(HeuristicLab.Clients.Hive.Appointment appointment);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetScheduleForResource", ReplyAction = "http://tempuri.org/IHiveService/GetScheduleForResourceResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.Appointment> GetScheduleForResource(System.Guid resourceId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AddJob", ReplyAction = "http://tempuri.org/IHiveService/AddJobResponse")]
-    System.Guid AddJob(HeuristicLab.Clients.Hive.Job job, HeuristicLab.Clients.Hive.JobData jobData, System.Collections.Generic.List<System.Guid> resourceIds);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AddChildJob", ReplyAction = "http://tempuri.org/IHiveService/AddChildJobResponse")]
-    System.Guid AddChildJob(System.Guid parentJobId, HeuristicLab.Clients.Hive.Job job, HeuristicLab.Clients.Hive.JobData jobData);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetJob", ReplyAction = "http://tempuri.org/IHiveService/GetJobResponse")]
-    HeuristicLab.Clients.Hive.Job GetJob(System.Guid jobId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetJobs", ReplyAction = "http://tempuri.org/IHiveService/GetJobsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.Job> GetJobs();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetLightweightJobs", ReplyAction = "http://tempuri.org/IHiveService/GetLightweightJobsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightJobs(System.Collections.Generic.List<System.Guid> jobIds);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetLightweightChildJobs", ReplyAction = "http://tempuri.org/IHiveService/GetLightweightChildJobsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightChildJobs(System.Nullable<System.Guid> parentJobId, bool recursive, bool includeParent);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetJobData", ReplyAction = "http://tempuri.org/IHiveService/GetJobDataResponse")]
-    HeuristicLab.Clients.Hive.JobData GetJobData(System.Guid jobId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/UpdateJob", ReplyAction = "http://tempuri.org/IHiveService/UpdateJobResponse")]
-    void UpdateJob(HeuristicLab.Clients.Hive.Job jobDto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/UpdateJobData", ReplyAction = "http://tempuri.org/IHiveService/UpdateJobDataResponse")]
-    void UpdateJobData(HeuristicLab.Clients.Hive.Job jobDto, HeuristicLab.Clients.Hive.JobData jobDataDto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/DeleteJob", ReplyAction = "http://tempuri.org/IHiveService/DeleteJobResponse")]
-    void DeleteJob(System.Guid jobId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/DeleteChildJobs", ReplyAction = "http://tempuri.org/IHiveService/DeleteChildJobsResponse")]
-    void DeleteChildJobs(System.Guid parentJobId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/UpdateJobState", ReplyAction = "http://tempuri.org/IHiveService/UpdateJobStateResponse")]
-    HeuristicLab.Clients.Hive.Job UpdateJobState(System.Guid jobId, HeuristicLab.Clients.Hive.JobState jobState, System.Nullable<System.Guid> slaveId, System.Nullable<System.Guid> userId, string exception);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/StopJob", ReplyAction = "http://tempuri.org/IHiveService/StopJobResponse")]
-    void StopJob(System.Guid jobId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/PauseJob", ReplyAction = "http://tempuri.org/IHiveService/PauseJobResponse")]
-    void PauseJob(System.Guid jobId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetHiveExperiment", ReplyAction = "http://tempuri.org/IHiveService/GetHiveExperimentResponse")]
-    HeuristicLab.Clients.Hive.HiveExperiment GetHiveExperiment(System.Guid id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetHiveExperiments", ReplyAction = "http://tempuri.org/IHiveService/GetHiveExperimentsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.HiveExperiment> GetHiveExperiments();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetAllHiveExperiments", ReplyAction = "http://tempuri.org/IHiveService/GetAllHiveExperimentsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.HiveExperiment> GetAllHiveExperiments();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AddHiveExperiment", ReplyAction = "http://tempuri.org/IHiveService/AddHiveExperimentResponse")]
-    System.Guid AddHiveExperiment(HeuristicLab.Clients.Hive.HiveExperiment hiveExperimentDto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/UpdateHiveExperiment", ReplyAction = "http://tempuri.org/IHiveService/UpdateHiveExperimentResponse")]
-    void UpdateHiveExperiment(HeuristicLab.Clients.Hive.HiveExperiment hiveExperimentDto);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/DeleteHiveExperiment", ReplyAction = "http://tempuri.org/IHiveService/DeleteHiveExperimentResponse")]
-    void DeleteHiveExperiment(System.Guid hiveExperimentId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/Hello", ReplyAction = "http://tempuri.org/IHiveService/HelloResponse")]
-    void Hello(HeuristicLab.Clients.Hive.Slave slave);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GoodBye", ReplyAction = "http://tempuri.org/IHiveService/GoodByeResponse")]
-    void GoodBye(System.Guid slaveId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/Heartbeat", ReplyAction = "http://tempuri.org/IHiveService/HeartbeatResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.MessageContainer> Heartbeat([System.ServiceModel.MessageParameterAttribute(Name = "heartbeat")] HeuristicLab.Clients.Hive.Heartbeat heartbeat1);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AddPlugin", ReplyAction = "http://tempuri.org/IHiveService/AddPluginResponse")]
-    System.Guid AddPlugin(HeuristicLab.Clients.Hive.Plugin plugin, System.Collections.Generic.List<HeuristicLab.Clients.Hive.PluginData> pluginData);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetPlugins", ReplyAction = "http://tempuri.org/IHiveService/GetPluginsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.Plugin> GetPlugins();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetPluginDatas", ReplyAction = "http://tempuri.org/IHiveService/GetPluginDatasResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Hive.PluginData> GetPluginDatas(System.Collections.Generic.List<System.Guid> pluginIds);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AddSlave", ReplyAction = "http://tempuri.org/IHiveService/AddSlaveResponse")]
-    System.Guid AddSlave(HeuristicLab.Clients.Hive.Slave slave);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AddSlaveGroup", ReplyAction = "http://tempuri.org/IHiveService/AddSlaveGroupResponse")]
-    System.Guid AddSlaveGroup(HeuristicLab.Clients.Hive.SlaveGroup slaveGroup);
-  }
-
-  [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 {
-
-    public HiveServiceClient() {
-    }
-
-    public HiveServiceClient(string endpointConfigurationName) :
-      base(endpointConfigurationName) {
-    }
-
-    public HiveServiceClient(string endpointConfigurationName, string remoteAddress) :
-      base(endpointConfigurationName, remoteAddress) {
-    }
-
-    public HiveServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
-      base(endpointConfigurationName, remoteAddress) {
-    }
-
-    public HiveServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
-      base(binding, remoteAddress) {
-    }
-
-    public HeuristicLab.Clients.Hive.Slave GetSlave(System.Guid slaveId) {
-      return base.Channel.GetSlave(slaveId);
-    }
-
-    public HeuristicLab.Clients.Hive.SlaveGroup GetSlaveGroup(System.Guid slaveGroupId) {
-      return base.Channel.GetSlaveGroup(slaveGroupId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Slave> GetSlaves() {
-      return base.Channel.GetSlaves();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.SlaveGroup> GetSlaveGroups() {
-      return base.Channel.GetSlaveGroups();
-    }
-
-    public void UpdateSlave(HeuristicLab.Clients.Hive.Slave slave) {
-      base.Channel.UpdateSlave(slave);
-    }
-
-    public void UpdateSlaveGroup(HeuristicLab.Clients.Hive.SlaveGroup slaveGroup) {
-      base.Channel.UpdateSlaveGroup(slaveGroup);
-    }
-
-    public void DeleteSlave(System.Guid slaveId) {
-      base.Channel.DeleteSlave(slaveId);
-    }
-
-    public void DeleteSlaveGroup(System.Guid slaveGroupId) {
-      base.Channel.DeleteSlaveGroup(slaveGroupId);
-    }
-
-    public void AddResourceToGroup(System.Guid slaveGroupId, System.Guid resourceId) {
-      base.Channel.AddResourceToGroup(slaveGroupId, resourceId);
-    }
-
-    public void RemoveResourceFromGroup(System.Guid slaveGroupId, System.Guid resourceId) {
-      base.Channel.RemoveResourceFromGroup(slaveGroupId, resourceId);
-    }
-
-    public System.Guid GetResourceId(string resourceName) {
-      return base.Channel.GetResourceId(resourceName);
-    }
-
-    public void TriggerLifecycle(bool force) {
-      base.Channel.TriggerLifecycle(force);
-    }
-
-    public System.Guid AddAppointment(HeuristicLab.Clients.Hive.Appointment appointment) {
-      return base.Channel.AddAppointment(appointment);
-    }
-
-    public void DeleteAppointment(System.Guid appointmentId) {
-      base.Channel.DeleteAppointment(appointmentId);
-    }
-
-    public void UpdateAppointment(HeuristicLab.Clients.Hive.Appointment appointment) {
-      base.Channel.UpdateAppointment(appointment);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Appointment> GetScheduleForResource(System.Guid resourceId) {
-      return base.Channel.GetScheduleForResource(resourceId);
-    }
-
-    public System.Guid AddJob(HeuristicLab.Clients.Hive.Job job, HeuristicLab.Clients.Hive.JobData jobData, System.Collections.Generic.List<System.Guid> resourceIds) {
-      return base.Channel.AddJob(job, jobData, resourceIds);
-    }
-
-    public System.Guid AddChildJob(System.Guid parentJobId, HeuristicLab.Clients.Hive.Job job, HeuristicLab.Clients.Hive.JobData jobData) {
-      return base.Channel.AddChildJob(parentJobId, job, jobData);
-    }
-
-    public HeuristicLab.Clients.Hive.Job GetJob(System.Guid jobId) {
-      return base.Channel.GetJob(jobId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Job> GetJobs() {
-      return base.Channel.GetJobs();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightJobs(System.Collections.Generic.List<System.Guid> jobIds) {
-      return base.Channel.GetLightweightJobs(jobIds);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightChildJobs(System.Nullable<System.Guid> parentJobId, bool recursive, bool includeParent) {
-      return base.Channel.GetLightweightChildJobs(parentJobId, recursive, includeParent);
-    }
-
-    public HeuristicLab.Clients.Hive.JobData GetJobData(System.Guid jobId) {
-      return base.Channel.GetJobData(jobId);
-    }
-
-    public void UpdateJob(HeuristicLab.Clients.Hive.Job jobDto) {
-      base.Channel.UpdateJob(jobDto);
-    }
-
-    public void UpdateJobData(HeuristicLab.Clients.Hive.Job jobDto, HeuristicLab.Clients.Hive.JobData jobDataDto) {
-      base.Channel.UpdateJobData(jobDto, jobDataDto);
-    }
-
-    public void DeleteJob(System.Guid jobId) {
-      base.Channel.DeleteJob(jobId);
-    }
-
-    public void DeleteChildJobs(System.Guid parentJobId) {
-      base.Channel.DeleteChildJobs(parentJobId);
-    }
-
-    public HeuristicLab.Clients.Hive.Job UpdateJobState(System.Guid jobId, HeuristicLab.Clients.Hive.JobState jobState, System.Nullable<System.Guid> slaveId, System.Nullable<System.Guid> userId, string exception) {
-      return base.Channel.UpdateJobState(jobId, jobState, slaveId, userId, exception);
-    }
-
-    public void StopJob(System.Guid jobId) {
-      base.Channel.StopJob(jobId);
-    }
-
-    public void PauseJob(System.Guid jobId) {
-      base.Channel.PauseJob(jobId);
-    }
-
-    public HeuristicLab.Clients.Hive.HiveExperiment GetHiveExperiment(System.Guid id) {
-      return base.Channel.GetHiveExperiment(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.HiveExperiment> GetHiveExperiments() {
-      return base.Channel.GetHiveExperiments();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.HiveExperiment> GetAllHiveExperiments() {
-      return base.Channel.GetAllHiveExperiments();
-    }
-
-    public System.Guid AddHiveExperiment(HeuristicLab.Clients.Hive.HiveExperiment hiveExperimentDto) {
-      return base.Channel.AddHiveExperiment(hiveExperimentDto);
-    }
-
-    public void UpdateHiveExperiment(HeuristicLab.Clients.Hive.HiveExperiment hiveExperimentDto) {
-      base.Channel.UpdateHiveExperiment(hiveExperimentDto);
-    }
-
-    public void DeleteHiveExperiment(System.Guid hiveExperimentId) {
-      base.Channel.DeleteHiveExperiment(hiveExperimentId);
-    }
-
-    public void Hello(HeuristicLab.Clients.Hive.Slave slave) {
-      base.Channel.Hello(slave);
-    }
-
-    public void GoodBye(System.Guid slaveId) {
-      base.Channel.GoodBye(slaveId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.MessageContainer> Heartbeat(HeuristicLab.Clients.Hive.Heartbeat heartbeat1) {
-      return base.Channel.Heartbeat(heartbeat1);
-    }
-
-    public System.Guid AddPlugin(HeuristicLab.Clients.Hive.Plugin plugin, System.Collections.Generic.List<HeuristicLab.Clients.Hive.PluginData> pluginData) {
-      return base.Channel.AddPlugin(plugin, pluginData);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Plugin> GetPlugins() {
-      return base.Channel.GetPlugins();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.PluginData> GetPluginDatas(System.Collections.Generic.List<System.Guid> pluginIds) {
-      return base.Channel.GetPluginDatas(pluginIds);
-    }
-
-    public System.Guid AddSlave(HeuristicLab.Clients.Hive.Slave slave) {
-      return base.Channel.AddSlave(slave);
-    }
-
-    public System.Guid AddSlaveGroup(HeuristicLab.Clients.Hive.SlaveGroup slaveGroup) {
-      return base.Channel.AddSlaveGroup(slaveGroup);
-    }
-  }
+    [System.Runtime.Serialization.DataContractAttribute(Name="HiveItem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.LightweightJob))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.StateLog))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Job))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.NamedHiveItem))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.HiveExperiment))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Resource))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Slave))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Plugin))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.PluginData))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Appointment))]
+    public partial class HiveItem : 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.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="LightweightJob", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Job))]
+    public partial class LightweightJob : HeuristicLab.Clients.Hive.HiveItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<HeuristicLab.Clients.Hive.Command> CommandField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<System.TimeSpan> ExecutionTimeField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<System.Guid> ParentJobIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Clients.Hive.JobState StateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Collections.Generic.List<HeuristicLab.Clients.Hive.StateLog> StateLogField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<HeuristicLab.Clients.Hive.Command> Command
+        {
+            get
+            {
+                return this.CommandField;
+            }
+            set
+            {
+                if ((this.CommandField.Equals(value) != true))
+                {
+                    this.CommandField = value;
+                    this.RaisePropertyChanged("Command");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.TimeSpan> ExecutionTime
+        {
+            get
+            {
+                return this.ExecutionTimeField;
+            }
+            set
+            {
+                if ((this.ExecutionTimeField.Equals(value) != true))
+                {
+                    this.ExecutionTimeField = value;
+                    this.RaisePropertyChanged("ExecutionTime");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.Guid> ParentJobId
+        {
+            get
+            {
+                return this.ParentJobIdField;
+            }
+            set
+            {
+                if ((this.ParentJobIdField.Equals(value) != true))
+                {
+                    this.ParentJobIdField = value;
+                    this.RaisePropertyChanged("ParentJobId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.Hive.JobState State
+        {
+            get
+            {
+                return this.StateField;
+            }
+            set
+            {
+                if ((this.StateField.Equals(value) != true))
+                {
+                    this.StateField = value;
+                    this.RaisePropertyChanged("State");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.StateLog> StateLog
+        {
+            get
+            {
+                return this.StateLogField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.StateLogField, value) != true))
+                {
+                    this.StateLogField = value;
+                    this.RaisePropertyChanged("StateLog");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="StateLog", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    public partial class StateLog : HeuristicLab.Clients.Hive.HiveItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime DateTimeField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string ExceptionField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid JobIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<System.Guid> SlaveIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Clients.Hive.JobState StateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<System.Guid> UserIdField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime DateTime
+        {
+            get
+            {
+                return this.DateTimeField;
+            }
+            set
+            {
+                if ((this.DateTimeField.Equals(value) != true))
+                {
+                    this.DateTimeField = value;
+                    this.RaisePropertyChanged("DateTime");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Exception
+        {
+            get
+            {
+                return this.ExceptionField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.ExceptionField, value) != true))
+                {
+                    this.ExceptionField = value;
+                    this.RaisePropertyChanged("Exception");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid JobId
+        {
+            get
+            {
+                return this.JobIdField;
+            }
+            set
+            {
+                if ((this.JobIdField.Equals(value) != true))
+                {
+                    this.JobIdField = value;
+                    this.RaisePropertyChanged("JobId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.Guid> SlaveId
+        {
+            get
+            {
+                return this.SlaveIdField;
+            }
+            set
+            {
+                if ((this.SlaveIdField.Equals(value) != true))
+                {
+                    this.SlaveIdField = value;
+                    this.RaisePropertyChanged("SlaveId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.Hive.JobState State
+        {
+            get
+            {
+                return this.StateField;
+            }
+            set
+            {
+                if ((this.StateField.Equals(value) != true))
+                {
+                    this.StateField = value;
+                    this.RaisePropertyChanged("State");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.Guid> UserId
+        {
+            get
+            {
+                return this.UserIdField;
+            }
+            set
+            {
+                if ((this.UserIdField.Equals(value) != true))
+                {
+                    this.UserIdField = value;
+                    this.RaisePropertyChanged("UserId");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="Job", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    public partial class Job : HeuristicLab.Clients.Hive.LightweightJob
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int CoresNeededField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool FinishWhenChildJobsFinishedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool IsParentJobField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<System.DateTime> LastHeartbeatField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int MemoryNeededField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Collections.Generic.List<System.Guid> PluginsNeededIdsField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int PriorityField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int CoresNeeded
+        {
+            get
+            {
+                return this.CoresNeededField;
+            }
+            set
+            {
+                if ((this.CoresNeededField.Equals(value) != true))
+                {
+                    this.CoresNeededField = value;
+                    this.RaisePropertyChanged("CoresNeeded");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool FinishWhenChildJobsFinished
+        {
+            get
+            {
+                return this.FinishWhenChildJobsFinishedField;
+            }
+            set
+            {
+                if ((this.FinishWhenChildJobsFinishedField.Equals(value) != true))
+                {
+                    this.FinishWhenChildJobsFinishedField = value;
+                    this.RaisePropertyChanged("FinishWhenChildJobsFinished");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool IsParentJob
+        {
+            get
+            {
+                return this.IsParentJobField;
+            }
+            set
+            {
+                if ((this.IsParentJobField.Equals(value) != true))
+                {
+                    this.IsParentJobField = value;
+                    this.RaisePropertyChanged("IsParentJob");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.DateTime> LastHeartbeat
+        {
+            get
+            {
+                return this.LastHeartbeatField;
+            }
+            set
+            {
+                if ((this.LastHeartbeatField.Equals(value) != true))
+                {
+                    this.LastHeartbeatField = value;
+                    this.RaisePropertyChanged("LastHeartbeat");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int MemoryNeeded
+        {
+            get
+            {
+                return this.MemoryNeededField;
+            }
+            set
+            {
+                if ((this.MemoryNeededField.Equals(value) != true))
+                {
+                    this.MemoryNeededField = value;
+                    this.RaisePropertyChanged("MemoryNeeded");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Collections.Generic.List<System.Guid> PluginsNeededIds
+        {
+            get
+            {
+                return this.PluginsNeededIdsField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.PluginsNeededIdsField, value) != true))
+                {
+                    this.PluginsNeededIdsField = value;
+                    this.RaisePropertyChanged("PluginsNeededIds");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int Priority
+        {
+            get
+            {
+                return this.PriorityField;
+            }
+            set
+            {
+                if ((this.PriorityField.Equals(value) != true))
+                {
+                    this.PriorityField = value;
+                    this.RaisePropertyChanged("Priority");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="NamedHiveItem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.HiveExperiment))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Resource))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Slave))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.Plugin))]
+    public partial class NamedHiveItem : HeuristicLab.Clients.Hive.HiveItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string DescriptionField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string NameField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Description
+        {
+            get
+            {
+                return this.DescriptionField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.DescriptionField, value) != true))
+                {
+                    this.DescriptionField = value;
+                    this.RaisePropertyChanged("Description");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Name
+        {
+            get
+            {
+                return this.NameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.NameField, value) != true))
+                {
+                    this.NameField = value;
+                    this.RaisePropertyChanged("Name");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="HiveExperiment", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    public partial class HiveExperiment : HeuristicLab.Clients.Hive.NamedHiveItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime DateCreatedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<System.DateTime> LastAccessedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid OwnerUserIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string ResourceNamesField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid RootJobIdField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime DateCreated
+        {
+            get
+            {
+                return this.DateCreatedField;
+            }
+            set
+            {
+                if ((this.DateCreatedField.Equals(value) != true))
+                {
+                    this.DateCreatedField = value;
+                    this.RaisePropertyChanged("DateCreated");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.DateTime> LastAccessed
+        {
+            get
+            {
+                return this.LastAccessedField;
+            }
+            set
+            {
+                if ((this.LastAccessedField.Equals(value) != true))
+                {
+                    this.LastAccessedField = value;
+                    this.RaisePropertyChanged("LastAccessed");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public 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 string ResourceNames
+        {
+            get
+            {
+                return this.ResourceNamesField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.ResourceNamesField, value) != true))
+                {
+                    this.ResourceNamesField = value;
+                    this.RaisePropertyChanged("ResourceNames");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid RootJobId
+        {
+            get
+            {
+                return this.RootJobIdField;
+            }
+            set
+            {
+                if ((this.RootJobIdField.Equals(value) != true))
+                {
+                    this.RootJobIdField = value;
+                    this.RaisePropertyChanged("RootJobId");
+                }
+            }
+        }
+    }
+    
+    [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.Common.DataTra" +
+        "nsfer")]
+    [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 System.Nullable<System.Guid> ParentResourceIdField;
+        
+        [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.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    public partial class Slave : HeuristicLab.Clients.Hive.Resource
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<int> CoresField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Clients.Hive.CpuArchitecture CpuArchitectureField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<int> CpuSpeedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<int> FreeCoresField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<int> FreeMemoryField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool IsAllowedToCalculateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<System.DateTime> LastHeartbeatField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Nullable<int> MemoryField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string OperatingSystemField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Clients.Hive.SlaveState SlaveStateField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<int> Cores
+        {
+            get
+            {
+                return this.CoresField;
+            }
+            set
+            {
+                if ((this.CoresField.Equals(value) != true))
+                {
+                    this.CoresField = value;
+                    this.RaisePropertyChanged("Cores");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.Hive.CpuArchitecture CpuArchitecture
+        {
+            get
+            {
+                return this.CpuArchitectureField;
+            }
+            set
+            {
+                if ((this.CpuArchitectureField.Equals(value) != true))
+                {
+                    this.CpuArchitectureField = value;
+                    this.RaisePropertyChanged("CpuArchitecture");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<int> CpuSpeed
+        {
+            get
+            {
+                return this.CpuSpeedField;
+            }
+            set
+            {
+                if ((this.CpuSpeedField.Equals(value) != true))
+                {
+                    this.CpuSpeedField = value;
+                    this.RaisePropertyChanged("CpuSpeed");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<int> FreeCores
+        {
+            get
+            {
+                return this.FreeCoresField;
+            }
+            set
+            {
+                if ((this.FreeCoresField.Equals(value) != true))
+                {
+                    this.FreeCoresField = value;
+                    this.RaisePropertyChanged("FreeCores");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<int> FreeMemory
+        {
+            get
+            {
+                return this.FreeMemoryField;
+            }
+            set
+            {
+                if ((this.FreeMemoryField.Equals(value) != true))
+                {
+                    this.FreeMemoryField = value;
+                    this.RaisePropertyChanged("FreeMemory");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool IsAllowedToCalculate
+        {
+            get
+            {
+                return this.IsAllowedToCalculateField;
+            }
+            set
+            {
+                if ((this.IsAllowedToCalculateField.Equals(value) != true))
+                {
+                    this.IsAllowedToCalculateField = value;
+                    this.RaisePropertyChanged("IsAllowedToCalculate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<System.DateTime> LastHeartbeat
+        {
+            get
+            {
+                return this.LastHeartbeatField;
+            }
+            set
+            {
+                if ((this.LastHeartbeatField.Equals(value) != true))
+                {
+                    this.LastHeartbeatField = value;
+                    this.RaisePropertyChanged("LastHeartbeat");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Nullable<int> Memory
+        {
+            get
+            {
+                return this.MemoryField;
+            }
+            set
+            {
+                if ((this.MemoryField.Equals(value) != true))
+                {
+                    this.MemoryField = value;
+                    this.RaisePropertyChanged("Memory");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string OperatingSystem
+        {
+            get
+            {
+                return this.OperatingSystemField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.OperatingSystemField, value) != true))
+                {
+                    this.OperatingSystemField = value;
+                    this.RaisePropertyChanged("OperatingSystem");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.Hive.SlaveState SlaveState
+        {
+            get
+            {
+                return this.SlaveStateField;
+            }
+            set
+            {
+                if ((this.SlaveStateField.Equals(value) != true))
+                {
+                    this.SlaveStateField = value;
+                    this.RaisePropertyChanged("SlaveState");
+                }
+            }
+        }
+    }
+    
+    [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.Common.DataTra" +
+        "nsfer")]
+    [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.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    public partial class Plugin : HeuristicLab.Clients.Hive.NamedHiveItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime DateCreatedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool IsLocalField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid UserIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Version VersionField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime DateCreated
+        {
+            get
+            {
+                return this.DateCreatedField;
+            }
+            set
+            {
+                if ((this.DateCreatedField.Equals(value) != true))
+                {
+                    this.DateCreatedField = value;
+                    this.RaisePropertyChanged("DateCreated");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool IsLocal
+        {
+            get
+            {
+                return this.IsLocalField;
+            }
+            set
+            {
+                if ((this.IsLocalField.Equals(value) != true))
+                {
+                    this.IsLocalField = value;
+                    this.RaisePropertyChanged("IsLocal");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid UserId
+        {
+            get
+            {
+                return this.UserIdField;
+            }
+            set
+            {
+                if ((this.UserIdField.Equals(value) != true))
+                {
+                    this.UserIdField = value;
+                    this.RaisePropertyChanged("UserId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Version Version
+        {
+            get
+            {
+                return this.VersionField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.VersionField, value) != true))
+                {
+                    this.VersionField = value;
+                    this.RaisePropertyChanged("Version");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="PluginData", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    public partial class PluginData : HeuristicLab.Clients.Hive.HiveItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private byte[] DataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string FileNameField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid PluginIdField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public byte[] Data
+        {
+            get
+            {
+                return this.DataField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.DataField, value) != true))
+                {
+                    this.DataField = value;
+                    this.RaisePropertyChanged("Data");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string FileName
+        {
+            get
+            {
+                return this.FileNameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.FileNameField, value) != true))
+                {
+                    this.FileNameField = value;
+                    this.RaisePropertyChanged("FileName");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid PluginId
+        {
+            get
+            {
+                return this.PluginIdField;
+            }
+            set
+            {
+                if ((this.PluginIdField.Equals(value) != true))
+                {
+                    this.PluginIdField = value;
+                    this.RaisePropertyChanged("PluginId");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="Appointment", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    public partial class Appointment : HeuristicLab.Clients.Hive.HiveItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool AllDayEventField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime EndDateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool RecurringField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid RecurringIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ResourceIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime StartDateField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool AllDayEvent
+        {
+            get
+            {
+                return this.AllDayEventField;
+            }
+            set
+            {
+                if ((this.AllDayEventField.Equals(value) != true))
+                {
+                    this.AllDayEventField = value;
+                    this.RaisePropertyChanged("AllDayEvent");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime EndDate
+        {
+            get
+            {
+                return this.EndDateField;
+            }
+            set
+            {
+                if ((this.EndDateField.Equals(value) != true))
+                {
+                    this.EndDateField = value;
+                    this.RaisePropertyChanged("EndDate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool Recurring
+        {
+            get
+            {
+                return this.RecurringField;
+            }
+            set
+            {
+                if ((this.RecurringField.Equals(value) != true))
+                {
+                    this.RecurringField = value;
+                    this.RaisePropertyChanged("Recurring");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid RecurringId
+        {
+            get
+            {
+                return this.RecurringIdField;
+            }
+            set
+            {
+                if ((this.RecurringIdField.Equals(value) != true))
+                {
+                    this.RecurringIdField = value;
+                    this.RaisePropertyChanged("RecurringId");
+                }
+            }
+        }
+        
+        [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.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime StartDate
+        {
+            get
+            {
+                return this.StartDateField;
+            }
+            set
+            {
+                if ((this.StartDateField.Equals(value) != true))
+                {
+                    this.StartDateField = value;
+                    this.RaisePropertyChanged("StartDate");
+                }
+            }
+        }
+    }
+    
+    [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.Common.DataTra" +
+        "nsfer")]
+    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="JobState", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    public enum JobState : int
+    {
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Offline = 0,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Waiting = 1,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Transferring = 2,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Calculating = 3,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Paused = 4,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Finished = 5,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Aborted = 6,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Failed = 7,
+    }
+    
+    [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.Common.DataTra" +
+        "nsfer")]
+    public enum CpuArchitecture : int
+    {
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        x86 = 0,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        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.Common.DataTra" +
+        "nsfer")]
+    public enum SlaveState : int
+    {
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Idle = 0,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Calculating = 1,
+        
+        [System.Runtime.Serialization.EnumMemberAttribute()]
+        Offline = 2,
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="JobData", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    public partial class JobData : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private byte[] DataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid JobIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime LastUpdateField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public byte[] Data
+        {
+            get
+            {
+                return this.DataField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.DataField, value) != true))
+                {
+                    this.DataField = value;
+                    this.RaisePropertyChanged("Data");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid JobId
+        {
+            get
+            {
+                return this.JobIdField;
+            }
+            set
+            {
+                if ((this.JobIdField.Equals(value) != true))
+                {
+                    this.JobIdField = value;
+                    this.RaisePropertyChanged("JobId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime LastUpdate
+        {
+            get
+            {
+                return this.LastUpdateField;
+            }
+            set
+            {
+                if ((this.LastUpdateField.Equals(value) != true))
+                {
+                    this.LastUpdateField = value;
+                    this.RaisePropertyChanged("LastUpdate");
+                }
+            }
+        }
+        
+        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.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="Heartbeat", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common.DataTra" +
+        "nsfer")]
+    [System.SerializableAttribute()]
+    public partial class Heartbeat : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool AssignJobField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int FreeCoresField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int FreeMemoryField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Collections.Generic.Dictionary<System.Guid, System.TimeSpan> JobProgressField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid SlaveIdField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool AssignJob
+        {
+            get
+            {
+                return this.AssignJobField;
+            }
+            set
+            {
+                if ((this.AssignJobField.Equals(value) != true))
+                {
+                    this.AssignJobField = value;
+                    this.RaisePropertyChanged("AssignJob");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int FreeCores
+        {
+            get
+            {
+                return this.FreeCoresField;
+            }
+            set
+            {
+                if ((this.FreeCoresField.Equals(value) != true))
+                {
+                    this.FreeCoresField = value;
+                    this.RaisePropertyChanged("FreeCores");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int FreeMemory
+        {
+            get
+            {
+                return this.FreeMemoryField;
+            }
+            set
+            {
+                if ((this.FreeMemoryField.Equals(value) != true))
+                {
+                    this.FreeMemoryField = value;
+                    this.RaisePropertyChanged("FreeMemory");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Collections.Generic.Dictionary<System.Guid, System.TimeSpan> JobProgress
+        {
+            get
+            {
+                return this.JobProgressField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.JobProgressField, value) != true))
+                {
+                    this.JobProgressField = value;
+                    this.RaisePropertyChanged("JobProgress");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid SlaveId
+        {
+            get
+            {
+                return this.SlaveIdField;
+            }
+            set
+            {
+                if ((this.SlaveIdField.Equals(value) != true))
+                {
+                    this.SlaveIdField = value;
+                    this.RaisePropertyChanged("SlaveId");
+                }
+            }
+        }
+        
+        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.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="MessageContainer", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common")]
+    [System.SerializableAttribute()]
+    public partial class MessageContainer : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid JobIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Clients.Hive.MessageContainer.MessageType MessageField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid JobId
+        {
+            get
+            {
+                return this.JobIdField;
+            }
+            set
+            {
+                if ((this.JobIdField.Equals(value) != true))
+                {
+                    this.JobIdField = value;
+                    this.RaisePropertyChanged("JobId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.Hive.MessageContainer.MessageType Message
+        {
+            get
+            {
+                return this.MessageField;
+            }
+            set
+            {
+                if ((this.MessageField.Equals(value) != true))
+                {
+                    this.MessageField = value;
+                    this.RaisePropertyChanged("Message");
+                }
+            }
+        }
+        
+        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.Runtime.Serialization", "4.0.0.0")]
+        [System.Runtime.Serialization.DataContractAttribute(Name="MessageContainer.MessageType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.Common")]
+        public enum MessageType : int
+        {
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            CalculateJob = 0,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            StopJob = 1,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            StopAll = 2,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            AbortJob = 3,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            AbortAll = 4,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            PauseJob = 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()]
+            AddChildJob = 11,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            GetChildJobs = 12,
+            
+            [System.Runtime.Serialization.EnumMemberAttribute()]
+            DeleteChildJobs = 13,
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="HeuristicLab.Clients.Hive.IHiveService")]
+    public interface IHiveService
+    {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/DeleteAppointment", ReplyAction="http://tempuri.org/IHiveService/DeleteAppointmentResponse")]
+        void DeleteAppointment(System.Guid appointmentId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/UpdateAppointment", ReplyAction="http://tempuri.org/IHiveService/UpdateAppointmentResponse")]
+        void UpdateAppointment(HeuristicLab.Clients.Hive.Appointment appointment);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetScheduleForResource", ReplyAction="http://tempuri.org/IHiveService/GetScheduleForResourceResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.Appointment> GetScheduleForResource(System.Guid resourceId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/AddJob", ReplyAction="http://tempuri.org/IHiveService/AddJobResponse")]
+        System.Guid AddJob(HeuristicLab.Clients.Hive.Job job, HeuristicLab.Clients.Hive.JobData jobData, System.Collections.Generic.List<System.Guid> resourceIds);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/AddChildJob", ReplyAction="http://tempuri.org/IHiveService/AddChildJobResponse")]
+        System.Guid AddChildJob(System.Guid parentJobId, HeuristicLab.Clients.Hive.Job job, HeuristicLab.Clients.Hive.JobData jobData);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetJob", ReplyAction="http://tempuri.org/IHiveService/GetJobResponse")]
+        HeuristicLab.Clients.Hive.Job GetJob(System.Guid jobId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetJobs", ReplyAction="http://tempuri.org/IHiveService/GetJobsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.Job> GetJobs();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetLightweightJobs", ReplyAction="http://tempuri.org/IHiveService/GetLightweightJobsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightJobs(System.Collections.Generic.List<System.Guid> jobIds);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetLightweightChildJobs", ReplyAction="http://tempuri.org/IHiveService/GetLightweightChildJobsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightChildJobs(System.Nullable<System.Guid> parentJobId, bool recursive, bool includeParent);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetJobData", ReplyAction="http://tempuri.org/IHiveService/GetJobDataResponse")]
+        HeuristicLab.Clients.Hive.JobData GetJobData(System.Guid jobId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/UpdateJob", ReplyAction="http://tempuri.org/IHiveService/UpdateJobResponse")]
+        void UpdateJob(HeuristicLab.Clients.Hive.Job jobDto);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/UpdateJobData", ReplyAction="http://tempuri.org/IHiveService/UpdateJobDataResponse")]
+        void UpdateJobData(HeuristicLab.Clients.Hive.Job jobDto, HeuristicLab.Clients.Hive.JobData jobDataDto);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/DeleteJob", ReplyAction="http://tempuri.org/IHiveService/DeleteJobResponse")]
+        void DeleteJob(System.Guid jobId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/DeleteChildJobs", ReplyAction="http://tempuri.org/IHiveService/DeleteChildJobsResponse")]
+        void DeleteChildJobs(System.Guid parentJobId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/UpdateJobState", ReplyAction="http://tempuri.org/IHiveService/UpdateJobStateResponse")]
+        HeuristicLab.Clients.Hive.Job UpdateJobState(System.Guid jobId, HeuristicLab.Clients.Hive.JobState jobState, System.Nullable<System.Guid> slaveId, System.Nullable<System.Guid> userId, string exception);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/StopJob", ReplyAction="http://tempuri.org/IHiveService/StopJobResponse")]
+        void StopJob(System.Guid jobId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/PauseJob", ReplyAction="http://tempuri.org/IHiveService/PauseJobResponse")]
+        void PauseJob(System.Guid jobId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/RestartJob", ReplyAction="http://tempuri.org/IHiveService/RestartJobResponse")]
+        void RestartJob(System.Guid jobId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetHiveExperiment", ReplyAction="http://tempuri.org/IHiveService/GetHiveExperimentResponse")]
+        HeuristicLab.Clients.Hive.HiveExperiment GetHiveExperiment(System.Guid id);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetHiveExperiments", ReplyAction="http://tempuri.org/IHiveService/GetHiveExperimentsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.HiveExperiment> GetHiveExperiments();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetAllHiveExperiments", ReplyAction="http://tempuri.org/IHiveService/GetAllHiveExperimentsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.HiveExperiment> GetAllHiveExperiments();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/AddHiveExperiment", ReplyAction="http://tempuri.org/IHiveService/AddHiveExperimentResponse")]
+        System.Guid AddHiveExperiment(HeuristicLab.Clients.Hive.HiveExperiment hiveExperimentDto);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/UpdateHiveExperiment", ReplyAction="http://tempuri.org/IHiveService/UpdateHiveExperimentResponse")]
+        void UpdateHiveExperiment(HeuristicLab.Clients.Hive.HiveExperiment hiveExperimentDto);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/DeleteHiveExperiment", ReplyAction="http://tempuri.org/IHiveService/DeleteHiveExperimentResponse")]
+        void DeleteHiveExperiment(System.Guid hiveExperimentId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/Hello", ReplyAction="http://tempuri.org/IHiveService/HelloResponse")]
+        void Hello(HeuristicLab.Clients.Hive.Slave slave);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GoodBye", ReplyAction="http://tempuri.org/IHiveService/GoodByeResponse")]
+        void GoodBye(System.Guid slaveId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/Heartbeat", ReplyAction="http://tempuri.org/IHiveService/HeartbeatResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.MessageContainer> Heartbeat([System.ServiceModel.MessageParameterAttribute(Name="heartbeat")] HeuristicLab.Clients.Hive.Heartbeat heartbeat1);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/AddPlugin", ReplyAction="http://tempuri.org/IHiveService/AddPluginResponse")]
+        System.Guid AddPlugin(HeuristicLab.Clients.Hive.Plugin plugin, System.Collections.Generic.List<HeuristicLab.Clients.Hive.PluginData> pluginData);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetPlugins", ReplyAction="http://tempuri.org/IHiveService/GetPluginsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.Plugin> GetPlugins();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetPluginDatas", ReplyAction="http://tempuri.org/IHiveService/GetPluginDatasResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.PluginData> GetPluginDatas(System.Collections.Generic.List<System.Guid> pluginIds);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/AddSlave", ReplyAction="http://tempuri.org/IHiveService/AddSlaveResponse")]
+        System.Guid AddSlave(HeuristicLab.Clients.Hive.Slave slave);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/AddSlaveGroup", ReplyAction="http://tempuri.org/IHiveService/AddSlaveGroupResponse")]
+        System.Guid AddSlaveGroup(HeuristicLab.Clients.Hive.SlaveGroup slaveGroup);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetSlave", ReplyAction="http://tempuri.org/IHiveService/GetSlaveResponse")]
+        HeuristicLab.Clients.Hive.Slave GetSlave(System.Guid slaveId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetSlaveGroup", ReplyAction="http://tempuri.org/IHiveService/GetSlaveGroupResponse")]
+        HeuristicLab.Clients.Hive.SlaveGroup GetSlaveGroup(System.Guid slaveGroupId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetSlaves", ReplyAction="http://tempuri.org/IHiveService/GetSlavesResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.Slave> GetSlaves();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetSlaveGroups", ReplyAction="http://tempuri.org/IHiveService/GetSlaveGroupsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Hive.SlaveGroup> GetSlaveGroups();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/UpdateSlave", ReplyAction="http://tempuri.org/IHiveService/UpdateSlaveResponse")]
+        void UpdateSlave(HeuristicLab.Clients.Hive.Slave slave);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/UpdateSlaveGroup", ReplyAction="http://tempuri.org/IHiveService/UpdateSlaveGroupResponse")]
+        void UpdateSlaveGroup(HeuristicLab.Clients.Hive.SlaveGroup slaveGroup);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/DeleteSlave", ReplyAction="http://tempuri.org/IHiveService/DeleteSlaveResponse")]
+        void DeleteSlave(System.Guid slaveId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/DeleteSlaveGroup", ReplyAction="http://tempuri.org/IHiveService/DeleteSlaveGroupResponse")]
+        void DeleteSlaveGroup(System.Guid slaveGroupId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/AddResourceToGroup", ReplyAction="http://tempuri.org/IHiveService/AddResourceToGroupResponse")]
+        void AddResourceToGroup(System.Guid slaveGroupId, System.Guid resourceId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/RemoveResourceFromGroup", ReplyAction="http://tempuri.org/IHiveService/RemoveResourceFromGroupResponse")]
+        void RemoveResourceFromGroup(System.Guid slaveGroupId, System.Guid resourceId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/GetResourceId", ReplyAction="http://tempuri.org/IHiveService/GetResourceIdResponse")]
+        System.Guid GetResourceId(string resourceName);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/TriggerLifecycle", ReplyAction="http://tempuri.org/IHiveService/TriggerLifecycleResponse")]
+        void TriggerLifecycle(bool force);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IHiveService/AddAppointment", ReplyAction="http://tempuri.org/IHiveService/AddAppointmentResponse")]
+        System.Guid AddAppointment(HeuristicLab.Clients.Hive.Appointment appointment);
+    }
+    
+    [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
+    {
+        
+        public HiveServiceClient()
+        {
+        }
+        
+        public HiveServiceClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName)
+        {
+        }
+        
+        public HiveServiceClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public HiveServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public HiveServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress)
+        {
+        }
+        
+        public void DeleteAppointment(System.Guid appointmentId)
+        {
+            base.Channel.DeleteAppointment(appointmentId);
+        }
+        
+        public void UpdateAppointment(HeuristicLab.Clients.Hive.Appointment appointment)
+        {
+            base.Channel.UpdateAppointment(appointment);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Appointment> GetScheduleForResource(System.Guid resourceId)
+        {
+            return base.Channel.GetScheduleForResource(resourceId);
+        }
+        
+        public System.Guid AddJob(HeuristicLab.Clients.Hive.Job job, HeuristicLab.Clients.Hive.JobData jobData, System.Collections.Generic.List<System.Guid> resourceIds)
+        {
+            return base.Channel.AddJob(job, jobData, resourceIds);
+        }
+        
+        public System.Guid AddChildJob(System.Guid parentJobId, HeuristicLab.Clients.Hive.Job job, HeuristicLab.Clients.Hive.JobData jobData)
+        {
+            return base.Channel.AddChildJob(parentJobId, job, jobData);
+        }
+        
+        public HeuristicLab.Clients.Hive.Job GetJob(System.Guid jobId)
+        {
+            return base.Channel.GetJob(jobId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Job> GetJobs()
+        {
+            return base.Channel.GetJobs();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightJobs(System.Collections.Generic.List<System.Guid> jobIds)
+        {
+            return base.Channel.GetLightweightJobs(jobIds);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightJob> GetLightweightChildJobs(System.Nullable<System.Guid> parentJobId, bool recursive, bool includeParent)
+        {
+            return base.Channel.GetLightweightChildJobs(parentJobId, recursive, includeParent);
+        }
+        
+        public HeuristicLab.Clients.Hive.JobData GetJobData(System.Guid jobId)
+        {
+            return base.Channel.GetJobData(jobId);
+        }
+        
+        public void UpdateJob(HeuristicLab.Clients.Hive.Job jobDto)
+        {
+            base.Channel.UpdateJob(jobDto);
+        }
+        
+        public void UpdateJobData(HeuristicLab.Clients.Hive.Job jobDto, HeuristicLab.Clients.Hive.JobData jobDataDto)
+        {
+            base.Channel.UpdateJobData(jobDto, jobDataDto);
+        }
+        
+        public void DeleteJob(System.Guid jobId)
+        {
+            base.Channel.DeleteJob(jobId);
+        }
+        
+        public void DeleteChildJobs(System.Guid parentJobId)
+        {
+            base.Channel.DeleteChildJobs(parentJobId);
+        }
+        
+        public HeuristicLab.Clients.Hive.Job UpdateJobState(System.Guid jobId, HeuristicLab.Clients.Hive.JobState jobState, System.Nullable<System.Guid> slaveId, System.Nullable<System.Guid> userId, string exception)
+        {
+            return base.Channel.UpdateJobState(jobId, jobState, slaveId, userId, exception);
+        }
+        
+        public void StopJob(System.Guid jobId)
+        {
+            base.Channel.StopJob(jobId);
+        }
+        
+        public void PauseJob(System.Guid jobId)
+        {
+            base.Channel.PauseJob(jobId);
+        }
+        
+        public void RestartJob(System.Guid jobId)
+        {
+            base.Channel.RestartJob(jobId);
+        }
+        
+        public HeuristicLab.Clients.Hive.HiveExperiment GetHiveExperiment(System.Guid id)
+        {
+            return base.Channel.GetHiveExperiment(id);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.HiveExperiment> GetHiveExperiments()
+        {
+            return base.Channel.GetHiveExperiments();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.HiveExperiment> GetAllHiveExperiments()
+        {
+            return base.Channel.GetAllHiveExperiments();
+        }
+        
+        public System.Guid AddHiveExperiment(HeuristicLab.Clients.Hive.HiveExperiment hiveExperimentDto)
+        {
+            return base.Channel.AddHiveExperiment(hiveExperimentDto);
+        }
+        
+        public void UpdateHiveExperiment(HeuristicLab.Clients.Hive.HiveExperiment hiveExperimentDto)
+        {
+            base.Channel.UpdateHiveExperiment(hiveExperimentDto);
+        }
+        
+        public void DeleteHiveExperiment(System.Guid hiveExperimentId)
+        {
+            base.Channel.DeleteHiveExperiment(hiveExperimentId);
+        }
+        
+        public void Hello(HeuristicLab.Clients.Hive.Slave slave)
+        {
+            base.Channel.Hello(slave);
+        }
+        
+        public void GoodBye(System.Guid slaveId)
+        {
+            base.Channel.GoodBye(slaveId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.MessageContainer> Heartbeat(HeuristicLab.Clients.Hive.Heartbeat heartbeat1)
+        {
+            return base.Channel.Heartbeat(heartbeat1);
+        }
+        
+        public System.Guid AddPlugin(HeuristicLab.Clients.Hive.Plugin plugin, System.Collections.Generic.List<HeuristicLab.Clients.Hive.PluginData> pluginData)
+        {
+            return base.Channel.AddPlugin(plugin, pluginData);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Plugin> GetPlugins()
+        {
+            return base.Channel.GetPlugins();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.PluginData> GetPluginDatas(System.Collections.Generic.List<System.Guid> pluginIds)
+        {
+            return base.Channel.GetPluginDatas(pluginIds);
+        }
+        
+        public System.Guid AddSlave(HeuristicLab.Clients.Hive.Slave slave)
+        {
+            return base.Channel.AddSlave(slave);
+        }
+        
+        public System.Guid AddSlaveGroup(HeuristicLab.Clients.Hive.SlaveGroup slaveGroup)
+        {
+            return base.Channel.AddSlaveGroup(slaveGroup);
+        }
+        
+        public HeuristicLab.Clients.Hive.Slave GetSlave(System.Guid slaveId)
+        {
+            return base.Channel.GetSlave(slaveId);
+        }
+        
+        public HeuristicLab.Clients.Hive.SlaveGroup GetSlaveGroup(System.Guid slaveGroupId)
+        {
+            return base.Channel.GetSlaveGroup(slaveGroupId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Slave> GetSlaves()
+        {
+            return base.Channel.GetSlaves();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Hive.SlaveGroup> GetSlaveGroups()
+        {
+            return base.Channel.GetSlaveGroups();
+        }
+        
+        public void UpdateSlave(HeuristicLab.Clients.Hive.Slave slave)
+        {
+            base.Channel.UpdateSlave(slave);
+        }
+        
+        public void UpdateSlaveGroup(HeuristicLab.Clients.Hive.SlaveGroup slaveGroup)
+        {
+            base.Channel.UpdateSlaveGroup(slaveGroup);
+        }
+        
+        public void DeleteSlave(System.Guid slaveId)
+        {
+            base.Channel.DeleteSlave(slaveId);
+        }
+        
+        public void DeleteSlaveGroup(System.Guid slaveGroupId)
+        {
+            base.Channel.DeleteSlaveGroup(slaveGroupId);
+        }
+        
+        public void AddResourceToGroup(System.Guid slaveGroupId, System.Guid resourceId)
+        {
+            base.Channel.AddResourceToGroup(slaveGroupId, resourceId);
+        }
+        
+        public void RemoveResourceFromGroup(System.Guid slaveGroupId, System.Guid resourceId)
+        {
+            base.Channel.RemoveResourceFromGroup(slaveGroupId, resourceId);
+        }
+        
+        public System.Guid GetResourceId(string resourceName)
+        {
+            return base.Channel.GetResourceId(resourceName);
+        }
+        
+        public void TriggerLifecycle(bool force)
+        {
+            base.Channel.TriggerLifecycle(force);
+        }
+        
+        public System.Guid AddAppointment(HeuristicLab.Clients.Hive.Appointment appointment)
+        {
+            return base.Channel.AddAppointment(appointment);
+        }
+    }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Job.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Job.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Job.cs	(revision 5779)
@@ -30,5 +30,5 @@
     public Job() { }
 
-    protected Job(Job original, Cloner cloner) {
+    protected Job(Job original, Cloner cloner) : base(original, cloner) {
       this.Priority = original.Priority;
       this.CoresNeeded = original.CoresNeeded;
@@ -38,9 +38,4 @@
       this.IsParentJob = original.IsParentJob;
       this.FinishWhenChildJobsFinished = original.FinishWhenChildJobsFinished;
-      this.ExecutionTime = original.ExecutionTime;
-      this.ParentJobId = original.ParentJobId;
-      this.StateLog = new List<StateLog>(original.StateLog);
-      this.State = original.State;
-      this.Id = original.Id;
     }
 
@@ -50,5 +45,10 @@
 
     public override string ToString() {
-      return string.Format("State: {0}, SlaveId: {1}, DateCreated: {2}, DateCalculated: {3}, CoresNeeded: {4}, MemoryNeeded: {5}", State, CurrentStateLog.SlaveId, DateCreated.HasValue ? DateCreated.ToString() : "-", CoresNeeded, MemoryNeeded);
+      return string.Format("State: {0}, SlaveId: {1}, DateCreated: {2}, CoresNeeded: {3}, MemoryNeeded: {4}", 
+        State, 
+        CurrentStateLog != null ? (CurrentStateLog.SlaveId.HasValue ? CurrentStateLog.SlaveId.Value.ToString() : string.Empty) : string.Empty, 
+        DateCreated.HasValue ? DateCreated.ToString() : string.Empty, 
+        CoresNeeded, 
+        MemoryNeeded);
     }
   }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/JobData.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/JobData.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/JobData.cs	(revision 5779)
@@ -29,4 +29,5 @@
 
     protected JobData(JobData original, Cloner cloner) {
+      cloner.RegisterClonedObject(original, this);
       if (original.Data != null) this.Data = new byte[original.Data.Length]; Array.Copy(original.Data, this.Data, original.Data.Length);
       this.LastUpdate = original.LastUpdate;
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/LightweightJob.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/LightweightJob.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/LightweightJob.cs	(revision 5779)
@@ -42,12 +42,14 @@
       this.StateLog = new List<StateLog>(job.StateLog);
       this.State = job.State;
+      this.Command = job.Command;
     }
 
-    protected LightweightJob(LightweightJob original, Cloner cloner) {
+    protected LightweightJob(LightweightJob original, Cloner cloner)
+      : base(original, cloner) {
       this.ExecutionTime = original.ExecutionTime;
       this.ParentJobId = original.ParentJobId;
       this.StateLog = new List<StateLog>(original.StateLog);
       this.State = original.State;
-      this.Id = original.Id;
+      this.Command = original.Command;
     }
     public override IDeepCloneable Clone(Cloner cloner) {
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/NamedHiveItem.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/NamedHiveItem.cs	(revision 5779)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/NamedHiveItem.cs	(revision 5779)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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 HeuristicLab.Common;
+
+namespace HeuristicLab.Clients.Hive {
+
+  public partial class NamedHiveItem : HiveItem {
+
+    public NamedHiveItem() { }
+
+    protected NamedHiveItem(NamedHiveItem original, Cloner cloner) : base(original, cloner) {
+      this.Name = original.Name;
+      this.Description = original.Description;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new NamedHiveItem(this, cloner);
+    }
+  }
+}
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Plugin.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Plugin.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Plugin.cs	(revision 5779)
@@ -20,22 +20,18 @@
 #endregion
 
-using System;
-using System.Runtime.Serialization;
 using HeuristicLab.Common;
 
 namespace HeuristicLab.Clients.Hive {
-  
+
   public partial class Plugin : IDeepCloneable, IContent {
 
     public Plugin() { }
 
-    protected Plugin(Plugin original, Cloner cloner) {
+    protected Plugin(Plugin original, Cloner cloner)
+      : base(original, cloner) {
       this.Version = original.Version;
       this.UserId = original.UserId;
       this.DateCreated = original.DateCreated;
       this.IsLocal = original.IsLocal;
-      this.Name = original.Name;
-      this.Description = original.Description;
-      this.Id = original.Id;
     }
 
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/PluginData.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/PluginData.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/PluginData.cs	(revision 5779)
@@ -29,5 +29,6 @@
     public PluginData() { }
 
-    protected PluginData(PluginData original, Cloner cloner) {
+    protected PluginData(PluginData original, Cloner cloner) 
+      : base(original, cloner) {
       if (original.Data != null)
         this.Data = new byte[original.Data.Length];
@@ -35,5 +36,4 @@
       this.FileName = original.FileName;
       this.PluginId = original.PluginId;
-      this.Id = original.Id;
     }
 
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Resource.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Resource.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Resource.cs	(revision 5779)
@@ -28,9 +28,7 @@
     public Resource() { }
 
-    protected Resource(Resource original, Cloner cloner) {
+    protected Resource(Resource original, Cloner cloner) 
+      : base(original, cloner) {
       this.ParentResourceId = original.ParentResourceId;
-      this.Name = original.Name;
-      this.Description = original.Description;
-      this.Id = original.Id;
     }
 
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/StateLog.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/StateLog.cs	(revision 5718)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/StateLog.cs	(revision 5779)
@@ -28,5 +28,6 @@
     public StateLog() { }
 
-    protected StateLog(StateLog original, Cloner cloner) {
+    protected StateLog(StateLog original, Cloner cloner)
+      : base(original, cloner) {
       this.DateTime = original.DateTime;
       this.UserId = original.UserId;
@@ -35,5 +36,4 @@
       this.State = original.State;
       this.JobId = original.JobId;
-      this.Id = original.Id;
     }
 
