Index: trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.cs	(revision 8070)
+++ trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.cs	(revision 8071)
@@ -232,5 +232,6 @@
           && resource.Name != UngroupedGroupName
           && resource.Id != Guid.Empty
-          && HiveServiceLocator.Instance.CallHiveService<bool>(service => { return service.AuthorizesForResourceAdministration(resource.Id); });
+          && UserInformation.Instance.UserExists
+          && (resource.OwnerUserId == UserInformation.Instance.User.Id || HiveRoles.CheckAdminUserPermissions());
     }
 
Index: trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/SlaveView.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/SlaveView.cs	(revision 8070)
+++ trunk/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/SlaveView.cs	(revision 8071)
@@ -69,5 +69,5 @@
           ShowSlaveUI(true);
           Slave ct = (Slave)Content;
-          bool authorized = HiveServiceLocator.Instance.CallHiveService<bool>(service => service.AuthorizesForResourceAdministration(ct.Id));
+          bool authorized = UserInformation.Instance.UserExists && (ct.OwnerUserId == UserInformation.Instance.User.Id || HiveRoles.CheckAdminUserPermissions());
           txtName.Text = ct.Name;
           txtHbIntervall.Text = ct.HbInterval.ToString();
Index: trunk/sources/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveServiceClient.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveServiceClient.cs	(revision 8070)
+++ trunk/sources/HeuristicLab.Clients.Hive/3.3/ServiceClients/HiveServiceClient.cs	(revision 8071)
@@ -11,4 +11,203 @@
 namespace HeuristicLab.Clients.Hive {
 
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Slave", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
+  [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 double CpuUtilizationField;
+
+    [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<bool> IsDisposableField;
+
+    [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 double CpuUtilization {
+      get {
+        return this.CpuUtilizationField;
+      }
+      set {
+        if ((this.CpuUtilizationField.Equals(value) != true)) {
+          this.CpuUtilizationField = value;
+          this.RaisePropertyChanged("CpuUtilization");
+        }
+      }
+    }
+
+    [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<bool> IsDisposable {
+      get {
+        return this.IsDisposableField;
+      }
+      set {
+        if ((this.IsDisposableField.Equals(value) != true)) {
+          this.IsDisposableField = value;
+          this.RaisePropertyChanged("IsDisposable");
+        }
+      }
+    }
+
+    [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()]
@@ -27,6 +226,6 @@
   [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))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
   public partial class HiveItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
 
@@ -711,6 +910,6 @@
   [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))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
   public partial class NamedHiveItem : HeuristicLab.Clients.Hive.HiveItem {
 
@@ -958,6 +1157,6 @@
   [System.Runtime.Serialization.DataContractAttribute(Name = "Resource", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
   [System.SerializableAttribute()]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Hive.SlaveGroup))]
   [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 {
 
@@ -1013,203 +1212,4 @@
   [System.Diagnostics.DebuggerStepThroughAttribute()]
   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "Slave", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
-  [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 double CpuUtilizationField;
-
-    [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<bool> IsDisposableField;
-
-    [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 double CpuUtilization {
-      get {
-        return this.CpuUtilizationField;
-      }
-      set {
-        if ((this.CpuUtilizationField.Equals(value) != true)) {
-          this.CpuUtilizationField = value;
-          this.RaisePropertyChanged("CpuUtilization");
-        }
-      }
-    }
-
-    [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<bool> IsDisposable {
-      get {
-        return this.IsDisposableField;
-      }
-      set {
-        if ((this.IsDisposableField.Equals(value) != true)) {
-          this.IsDisposableField = value;
-          this.RaisePropertyChanged("IsDisposable");
-        }
-      }
-    }
-
-    [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.DataTransfer")]
   [System.SerializableAttribute()]
@@ -1218,4 +1218,29 @@
 
   [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "CpuArchitecture", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
+  public enum CpuArchitecture : int {
+
+    [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.DataTransfer")]
+  public enum SlaveState : int {
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Idle = 0,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Calculating = 1,
+
+    [System.Runtime.Serialization.EnumMemberAttribute()]
+    Offline = 2,
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
   [System.Runtime.Serialization.DataContractAttribute(Name = "Command", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
   public enum Command : int {
@@ -1272,29 +1297,4 @@
     [System.Runtime.Serialization.EnumMemberAttribute()]
     Full = 2,
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "CpuArchitecture", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Hive.DataTransfer")]
-  public enum CpuArchitecture : int {
-
-    [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.DataTransfer")]
-  public enum SlaveState : int {
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Idle = 0,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Calculating = 1,
-
-    [System.Runtime.Serialization.EnumMemberAttribute()]
-    Offline = 2,
   }
 
@@ -1664,7 +1664,4 @@
   public interface IHiveService {
 
-    [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();
@@ -1720,7 +1717,4 @@
     [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/GetUserIdByUsername", ReplyAction = "http://tempuri.org/IHiveService/GetUserIdByUsernameResponse")]
     System.Guid GetUserIdByUsername(string username);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AuthorizesForResourceAdministration", ReplyAction = "http://tempuri.org/IHiveService/AuthorizesForResourceAdministrationResponse")]
-    bool AuthorizesForResourceAdministration(System.Guid resourceId);
 
     [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IHiveService/AddTask", ReplyAction = "http://tempuri.org/IHiveService/AddTaskResponse")]
@@ -1847,4 +1841,7 @@
     [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);
   }
 
@@ -1876,247 +1873,243 @@
     }
 
+    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 System.Collections.Generic.List<HeuristicLab.Clients.Hive.Task> GetTasksByResourceId(System.Guid resourceId) {
+      return base.Channel.GetTasksByResourceId(resourceId);
+    }
+
+    public void TriggerEventManager(bool force) {
+      base.Channel.TriggerEventManager(force);
+    }
+
+    public int GetNewHeartbeatInterval(System.Guid slaveId) {
+      return base.Channel.GetNewHeartbeatInterval(slaveId);
+    }
+
+    public System.Guid AddDowntime(HeuristicLab.Clients.Hive.Downtime downtime) {
+      return base.Channel.AddDowntime(downtime);
+    }
+
+    public void DeleteDowntime(System.Guid downtimeId) {
+      base.Channel.DeleteDowntime(downtimeId);
+    }
+
+    public void UpdateDowntime(HeuristicLab.Clients.Hive.Downtime downtime) {
+      base.Channel.UpdateDowntime(downtime);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Downtime> GetDowntimesForResource(System.Guid resourceId) {
+      return base.Channel.GetDowntimesForResource(resourceId);
+    }
+
+    public string GetUsernameByUserId(System.Guid userId) {
+      return base.Channel.GetUsernameByUserId(userId);
+    }
+
+    public System.Guid GetUserIdByUsername(string username) {
+      return base.Channel.GetUserIdByUsername(username);
+    }
+
+    public System.Guid AddTask(HeuristicLab.Clients.Hive.Task task, HeuristicLab.Clients.Hive.TaskData taskData, System.Collections.Generic.List<System.Guid> resourceIds) {
+      return base.Channel.AddTask(task, taskData, resourceIds);
+    }
+
+    public System.Guid AddChildTask(System.Guid parentTaskId, HeuristicLab.Clients.Hive.Task task, HeuristicLab.Clients.Hive.TaskData taskData) {
+      return base.Channel.AddChildTask(parentTaskId, task, taskData);
+    }
+
+    public HeuristicLab.Clients.Hive.Task GetTask(System.Guid taskId) {
+      return base.Channel.GetTask(taskId);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Task> GetTasks() {
+      return base.Channel.GetTasks();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightTask> GetLightweightTasks(System.Collections.Generic.List<System.Guid> taskIds) {
+      return base.Channel.GetLightweightTasks(taskIds);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightTask> GetLightweightChildTasks(System.Nullable<System.Guid> parentTaskId, bool recursive, bool includeParent) {
+      return base.Channel.GetLightweightChildTasks(parentTaskId, recursive, includeParent);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightTask> GetLightweightJobTasks(System.Guid jobId) {
+      return base.Channel.GetLightweightJobTasks(jobId);
+    }
+
+    public HeuristicLab.Clients.Hive.TaskData GetTaskData(System.Guid taskId) {
+      return base.Channel.GetTaskData(taskId);
+    }
+
+    public void UpdateTask(HeuristicLab.Clients.Hive.Task taskDto) {
+      base.Channel.UpdateTask(taskDto);
+    }
+
+    public void UpdateTaskData(HeuristicLab.Clients.Hive.Task taskDto, HeuristicLab.Clients.Hive.TaskData taskDataDto) {
+      base.Channel.UpdateTaskData(taskDto, taskDataDto);
+    }
+
+    public void DeleteTask(System.Guid taskId) {
+      base.Channel.DeleteTask(taskId);
+    }
+
+    public void DeleteChildTasks(System.Guid parentTaskId) {
+      base.Channel.DeleteChildTasks(parentTaskId);
+    }
+
+    public HeuristicLab.Clients.Hive.Task UpdateTaskState(System.Guid taskId, HeuristicLab.Clients.Hive.TaskState taskState, System.Nullable<System.Guid> slaveId, System.Nullable<System.Guid> userId, string exception) {
+      return base.Channel.UpdateTaskState(taskId, taskState, slaveId, userId, exception);
+    }
+
+    public void StopTask(System.Guid taskId) {
+      base.Channel.StopTask(taskId);
+    }
+
+    public void PauseTask(System.Guid taskId) {
+      base.Channel.PauseTask(taskId);
+    }
+
+    public void RestartTask(System.Guid taskId) {
+      base.Channel.RestartTask(taskId);
+    }
+
+    public HeuristicLab.Clients.Hive.Job GetJob(System.Guid id) {
+      return base.Channel.GetJob(id);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Job> GetJobs() {
+      return base.Channel.GetJobs();
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Job> GetAllJobs() {
+      return base.Channel.GetAllJobs();
+    }
+
+    public System.Guid AddJob(HeuristicLab.Clients.Hive.Job jobDto) {
+      return base.Channel.AddJob(jobDto);
+    }
+
+    public void UpdateJob(HeuristicLab.Clients.Hive.Job jobDto) {
+      base.Channel.UpdateJob(jobDto);
+    }
+
+    public void DeleteJob(System.Guid JobId) {
+      base.Channel.DeleteJob(JobId);
+    }
+
+    public void GrantPermission(System.Guid jobId, System.Guid grantedUserId, HeuristicLab.Clients.Hive.Permission permission) {
+      base.Channel.GrantPermission(jobId, grantedUserId, permission);
+    }
+
+    public void RevokePermission(System.Guid hiveExperimentId, System.Guid grantedUserId) {
+      base.Channel.RevokePermission(hiveExperimentId, grantedUserId);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.JobPermission> GetJobPermissions(System.Guid jobId) {
+      return base.Channel.GetJobPermissions(jobId);
+    }
+
+    public bool IsAllowedPrivileged() {
+      return base.Channel.IsAllowedPrivileged();
+    }
+
+    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 HeuristicLab.Clients.Hive.Plugin GetPlugin(System.Guid pluginId) {
+      return base.Channel.GetPlugin(pluginId);
+    }
+
+    public HeuristicLab.Clients.Hive.Plugin GetPluginByHash(byte[] hash) {
+      return base.Channel.GetPluginByHash(hash);
+    }
+
+    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 void DeletePlugin(System.Guid pluginId) {
+      base.Channel.DeletePlugin(pluginId);
+    }
+
+    public void GrantResourcePermissions(System.Guid resourceId, System.Collections.Generic.List<System.Guid> grantedUserIds) {
+      base.Channel.GrantResourcePermissions(resourceId, grantedUserIds);
+    }
+
+    public void RevokeResourcePermissions(System.Guid resourceId, System.Collections.Generic.List<System.Guid> grantedUserIds) {
+      base.Channel.RevokeResourcePermissions(resourceId, grantedUserIds);
+    }
+
+    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.ResourcePermission> GetResourcePermissions(System.Guid resourceId) {
+      return base.Channel.GetResourcePermissions(resourceId);
+    }
+
+    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 System.Collections.Generic.List<HeuristicLab.Clients.Hive.Task> GetTasksByResourceId(System.Guid resourceId) {
-      return base.Channel.GetTasksByResourceId(resourceId);
-    }
-
-    public void TriggerEventManager(bool force) {
-      base.Channel.TriggerEventManager(force);
-    }
-
-    public int GetNewHeartbeatInterval(System.Guid slaveId) {
-      return base.Channel.GetNewHeartbeatInterval(slaveId);
-    }
-
-    public System.Guid AddDowntime(HeuristicLab.Clients.Hive.Downtime downtime) {
-      return base.Channel.AddDowntime(downtime);
-    }
-
-    public void DeleteDowntime(System.Guid downtimeId) {
-      base.Channel.DeleteDowntime(downtimeId);
-    }
-
-    public void UpdateDowntime(HeuristicLab.Clients.Hive.Downtime downtime) {
-      base.Channel.UpdateDowntime(downtime);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Downtime> GetDowntimesForResource(System.Guid resourceId) {
-      return base.Channel.GetDowntimesForResource(resourceId);
-    }
-
-    public string GetUsernameByUserId(System.Guid userId) {
-      return base.Channel.GetUsernameByUserId(userId);
-    }
-
-    public System.Guid GetUserIdByUsername(string username) {
-      return base.Channel.GetUserIdByUsername(username);
-    }
-
-    public bool AuthorizesForResourceAdministration(System.Guid resourceId) {
-      return base.Channel.AuthorizesForResourceAdministration(resourceId);
-    }
-
-    public System.Guid AddTask(HeuristicLab.Clients.Hive.Task task, HeuristicLab.Clients.Hive.TaskData taskData, System.Collections.Generic.List<System.Guid> resourceIds) {
-      return base.Channel.AddTask(task, taskData, resourceIds);
-    }
-
-    public System.Guid AddChildTask(System.Guid parentTaskId, HeuristicLab.Clients.Hive.Task task, HeuristicLab.Clients.Hive.TaskData taskData) {
-      return base.Channel.AddChildTask(parentTaskId, task, taskData);
-    }
-
-    public HeuristicLab.Clients.Hive.Task GetTask(System.Guid taskId) {
-      return base.Channel.GetTask(taskId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Task> GetTasks() {
-      return base.Channel.GetTasks();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightTask> GetLightweightTasks(System.Collections.Generic.List<System.Guid> taskIds) {
-      return base.Channel.GetLightweightTasks(taskIds);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightTask> GetLightweightChildTasks(System.Nullable<System.Guid> parentTaskId, bool recursive, bool includeParent) {
-      return base.Channel.GetLightweightChildTasks(parentTaskId, recursive, includeParent);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.LightweightTask> GetLightweightJobTasks(System.Guid jobId) {
-      return base.Channel.GetLightweightJobTasks(jobId);
-    }
-
-    public HeuristicLab.Clients.Hive.TaskData GetTaskData(System.Guid taskId) {
-      return base.Channel.GetTaskData(taskId);
-    }
-
-    public void UpdateTask(HeuristicLab.Clients.Hive.Task taskDto) {
-      base.Channel.UpdateTask(taskDto);
-    }
-
-    public void UpdateTaskData(HeuristicLab.Clients.Hive.Task taskDto, HeuristicLab.Clients.Hive.TaskData taskDataDto) {
-      base.Channel.UpdateTaskData(taskDto, taskDataDto);
-    }
-
-    public void DeleteTask(System.Guid taskId) {
-      base.Channel.DeleteTask(taskId);
-    }
-
-    public void DeleteChildTasks(System.Guid parentTaskId) {
-      base.Channel.DeleteChildTasks(parentTaskId);
-    }
-
-    public HeuristicLab.Clients.Hive.Task UpdateTaskState(System.Guid taskId, HeuristicLab.Clients.Hive.TaskState taskState, System.Nullable<System.Guid> slaveId, System.Nullable<System.Guid> userId, string exception) {
-      return base.Channel.UpdateTaskState(taskId, taskState, slaveId, userId, exception);
-    }
-
-    public void StopTask(System.Guid taskId) {
-      base.Channel.StopTask(taskId);
-    }
-
-    public void PauseTask(System.Guid taskId) {
-      base.Channel.PauseTask(taskId);
-    }
-
-    public void RestartTask(System.Guid taskId) {
-      base.Channel.RestartTask(taskId);
-    }
-
-    public HeuristicLab.Clients.Hive.Job GetJob(System.Guid id) {
-      return base.Channel.GetJob(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Job> GetJobs() {
-      return base.Channel.GetJobs();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.Job> GetAllJobs() {
-      return base.Channel.GetAllJobs();
-    }
-
-    public System.Guid AddJob(HeuristicLab.Clients.Hive.Job jobDto) {
-      return base.Channel.AddJob(jobDto);
-    }
-
-    public void UpdateJob(HeuristicLab.Clients.Hive.Job jobDto) {
-      base.Channel.UpdateJob(jobDto);
-    }
-
-    public void DeleteJob(System.Guid JobId) {
-      base.Channel.DeleteJob(JobId);
-    }
-
-    public void GrantPermission(System.Guid jobId, System.Guid grantedUserId, HeuristicLab.Clients.Hive.Permission permission) {
-      base.Channel.GrantPermission(jobId, grantedUserId, permission);
-    }
-
-    public void RevokePermission(System.Guid hiveExperimentId, System.Guid grantedUserId) {
-      base.Channel.RevokePermission(hiveExperimentId, grantedUserId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.JobPermission> GetJobPermissions(System.Guid jobId) {
-      return base.Channel.GetJobPermissions(jobId);
-    }
-
-    public bool IsAllowedPrivileged() {
-      return base.Channel.IsAllowedPrivileged();
-    }
-
-    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 HeuristicLab.Clients.Hive.Plugin GetPlugin(System.Guid pluginId) {
-      return base.Channel.GetPlugin(pluginId);
-    }
-
-    public HeuristicLab.Clients.Hive.Plugin GetPluginByHash(byte[] hash) {
-      return base.Channel.GetPluginByHash(hash);
-    }
-
-    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 void DeletePlugin(System.Guid pluginId) {
-      base.Channel.DeletePlugin(pluginId);
-    }
-
-    public void GrantResourcePermissions(System.Guid resourceId, System.Collections.Generic.List<System.Guid> grantedUserIds) {
-      base.Channel.GrantResourcePermissions(resourceId, grantedUserIds);
-    }
-
-    public void RevokeResourcePermissions(System.Guid resourceId, System.Collections.Generic.List<System.Guid> grantedUserIds) {
-      base.Channel.RevokeResourcePermissions(resourceId, grantedUserIds);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Hive.ResourcePermission> GetResourcePermissions(System.Guid resourceId) {
-      return base.Channel.GetResourcePermissions(resourceId);
-    }
-
-    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);
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Services.Hive/3.3/HiveService.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.Hive/3.3/HiveService.cs	(revision 8070)
+++ trunk/sources/HeuristicLab.Services.Hive/3.3/HiveService.cs	(revision 8071)
@@ -60,14 +60,4 @@
     }
 
-    #region Authorization Methods
-    public bool AuthorizesForResourceAdministration(Guid resourceId) {
-      try {
-        author.AuthorizeForResourceAdministration(resourceId);
-        return true;
-      }
-      catch (System.Security.SecurityException) { return false; }
-    }
-    #endregion
-
     #region Task Methods
     public Guid AddTask(Task task, TaskData taskData, IEnumerable<Guid> resourceIds) {
Index: trunk/sources/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs
===================================================================
--- trunk/sources/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs	(revision 8070)
+++ trunk/sources/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs	(revision 8071)
@@ -30,9 +30,4 @@
   [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
   public interface IHiveService {
-    #region Authorization Methods
-    [OperationContract]
-    bool AuthorizesForResourceAdministration(Guid resourceId);
-    #endregion
-
     #region Task Methods
     [OperationContract]
