Index: branches/symbreg-factors-2650/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessServiceClient.cs
===================================================================
--- branches/symbreg-factors-2650/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessServiceClient.cs	(revision 14751)
+++ branches/symbreg-factors-2650/HeuristicLab.Clients.Access/3.3/ServiceClients/AccessServiceClient.cs	(revision 14752)
@@ -2,5 +2,5 @@
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.544
+//     Runtime Version:4.0.30319.42000
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
@@ -9,1510 +9,1822 @@
 //------------------------------------------------------------------------------
 
-namespace HeuristicLab.Clients.Access {
-
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "AccessItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Role))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientError))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Resource))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Client))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientConfiguration))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientType))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Country))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.OperatingSystem))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientGroup))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientLog))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroupBase))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroup))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.LightweightUser))]
-  public partial class AccessItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    [System.NonSerializedAttribute()]
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    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 = "Role", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class Role : HeuristicLab.Clients.Access.AccessItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string NameField;
-
-    [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 = "ClientError", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class ClientError : HeuristicLab.Clients.Access.AccessItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid ClientIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string ConfigDumpField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string ExceptionField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid IdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime TimestampField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string UserCommentField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid UserIdField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid ClientId {
-      get {
-        return this.ClientIdField;
-      }
-      set {
-        if ((this.ClientIdField.Equals(value) != true)) {
-          this.ClientIdField = value;
-          this.RaisePropertyChanged("ClientId");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string ConfigDump {
-      get {
-        return this.ConfigDumpField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ConfigDumpField, value) != true)) {
-          this.ConfigDumpField = value;
-          this.RaisePropertyChanged("ConfigDump");
-        }
-      }
-    }
-
-    [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 Id {
-      get {
-        return this.IdField;
-      }
-      set {
-        if ((this.IdField.Equals(value) != true)) {
-          this.IdField = value;
-          this.RaisePropertyChanged("Id");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime Timestamp {
-      get {
-        return this.TimestampField;
-      }
-      set {
-        if ((this.TimestampField.Equals(value) != true)) {
-          this.TimestampField = value;
-          this.RaisePropertyChanged("Timestamp");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string UserComment {
-      get {
-        return this.UserCommentField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.UserCommentField, value) != true)) {
-          this.UserCommentField = value;
-          this.RaisePropertyChanged("UserComment");
-        }
-      }
-    }
-
-    [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.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.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Client))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientGroup))]
-  public partial class Resource : HeuristicLab.Clients.Access.AccessItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string DescriptionField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid IdField;
-
-    [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 System.Guid Id {
-      get {
-        return this.IdField;
-      }
-      set {
-        if ((this.IdField.Equals(value) != true)) {
-          this.IdField = value;
-          this.RaisePropertyChanged("Id");
-        }
-      }
-    }
-
-    [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 = "Client", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class Client : HeuristicLab.Clients.Access.Resource {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private HeuristicLab.Clients.Access.ClientConfiguration ClientConfigurationField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private HeuristicLab.Clients.Access.ClientType ClientTypeField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private HeuristicLab.Clients.Access.Country CountryField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string HeuristicLabVersionField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private int MemorySizeField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private int NumberOfCoresField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private HeuristicLab.Clients.Access.OperatingSystem OperatingSystemField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private double PerformanceValueField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string ProcessorTypeField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime TimestampField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.Access.ClientConfiguration ClientConfiguration {
-      get {
-        return this.ClientConfigurationField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ClientConfigurationField, value) != true)) {
-          this.ClientConfigurationField = value;
-          this.RaisePropertyChanged("ClientConfiguration");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.Access.ClientType ClientType {
-      get {
-        return this.ClientTypeField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ClientTypeField, value) != true)) {
-          this.ClientTypeField = value;
-          this.RaisePropertyChanged("ClientType");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.Access.Country Country {
-      get {
-        return this.CountryField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.CountryField, value) != true)) {
-          this.CountryField = value;
-          this.RaisePropertyChanged("Country");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string HeuristicLabVersion {
-      get {
-        return this.HeuristicLabVersionField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.HeuristicLabVersionField, value) != true)) {
-          this.HeuristicLabVersionField = value;
-          this.RaisePropertyChanged("HeuristicLabVersion");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public int MemorySize {
-      get {
-        return this.MemorySizeField;
-      }
-      set {
-        if ((this.MemorySizeField.Equals(value) != true)) {
-          this.MemorySizeField = value;
-          this.RaisePropertyChanged("MemorySize");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public int NumberOfCores {
-      get {
-        return this.NumberOfCoresField;
-      }
-      set {
-        if ((this.NumberOfCoresField.Equals(value) != true)) {
-          this.NumberOfCoresField = value;
-          this.RaisePropertyChanged("NumberOfCores");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public HeuristicLab.Clients.Access.OperatingSystem OperatingSystem {
-      get {
-        return this.OperatingSystemField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.OperatingSystemField, value) != true)) {
-          this.OperatingSystemField = value;
-          this.RaisePropertyChanged("OperatingSystem");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public double PerformanceValue {
-      get {
-        return this.PerformanceValueField;
-      }
-      set {
-        if ((this.PerformanceValueField.Equals(value) != true)) {
-          this.PerformanceValueField = value;
-          this.RaisePropertyChanged("PerformanceValue");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string ProcessorType {
-      get {
-        return this.ProcessorTypeField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.ProcessorTypeField, value) != true)) {
-          this.ProcessorTypeField = value;
-          this.RaisePropertyChanged("ProcessorType");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime Timestamp {
-      get {
-        return this.TimestampField;
-      }
-      set {
-        if ((this.TimestampField.Equals(value) != true)) {
-          this.TimestampField = value;
-          this.RaisePropertyChanged("Timestamp");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ClientConfiguration", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class ClientConfiguration : HeuristicLab.Clients.Access.AccessItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string DescriptionField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string HashField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid IdField;
-
-    [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 Hash {
-      get {
-        return this.HashField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.HashField, value) != true)) {
-          this.HashField = value;
-          this.RaisePropertyChanged("Hash");
-        }
-      }
-    }
-
-    [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");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ClientType", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class ClientType : HeuristicLab.Clients.Access.AccessItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid IdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string NameField;
-
-    [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");
-        }
-      }
-    }
-
-    [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 = "Country", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class Country : HeuristicLab.Clients.Access.AccessItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid IdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string NameField;
-
-    [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");
-        }
-      }
-    }
-
-    [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 = "OperatingSystem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class OperatingSystem : HeuristicLab.Clients.Access.AccessItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid IdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string NameField;
-
-    [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");
-        }
-      }
-    }
-
-    [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 = "ClientGroup", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class ClientGroup : HeuristicLab.Clients.Access.Resource {
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "ClientLog", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class ClientLog : HeuristicLab.Clients.Access.AccessItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string MessageField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid ResourceIdField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime TimestampField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Message {
-      get {
-        return this.MessageField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.MessageField, value) != true)) {
-          this.MessageField = value;
-          this.RaisePropertyChanged("Message");
-        }
-      }
-    }
-
-    [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 Timestamp {
-      get {
-        return this.TimestampField;
-      }
-      set {
-        if ((this.TimestampField.Equals(value) != true)) {
-          this.TimestampField = value;
-          this.RaisePropertyChanged("Timestamp");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "UserGroupBase", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroup))]
-  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.LightweightUser))]
-  public partial class UserGroupBase : HeuristicLab.Clients.Access.AccessItem {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid IdField;
-
-    [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");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "User", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class User : HeuristicLab.Clients.Access.UserGroupBase {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string CommentField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime CreationDateField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string EmailField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string FullNameField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private bool IsApprovedField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime LastActivityDateField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime LastLoginDateField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.DateTime LastPasswordChangedDateField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string UserNameField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Comment {
-      get {
-        return this.CommentField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.CommentField, value) != true)) {
-          this.CommentField = value;
-          this.RaisePropertyChanged("Comment");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime CreationDate {
-      get {
-        return this.CreationDateField;
-      }
-      set {
-        if ((this.CreationDateField.Equals(value) != true)) {
-          this.CreationDateField = value;
-          this.RaisePropertyChanged("CreationDate");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string Email {
-      get {
-        return this.EmailField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.EmailField, value) != true)) {
-          this.EmailField = value;
-          this.RaisePropertyChanged("Email");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string FullName {
-      get {
-        return this.FullNameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.FullNameField, value) != true)) {
-          this.FullNameField = value;
-          this.RaisePropertyChanged("FullName");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public bool IsApproved {
-      get {
-        return this.IsApprovedField;
-      }
-      set {
-        if ((this.IsApprovedField.Equals(value) != true)) {
-          this.IsApprovedField = value;
-          this.RaisePropertyChanged("IsApproved");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime LastActivityDate {
-      get {
-        return this.LastActivityDateField;
-      }
-      set {
-        if ((this.LastActivityDateField.Equals(value) != true)) {
-          this.LastActivityDateField = value;
-          this.RaisePropertyChanged("LastActivityDate");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime LastLoginDate {
-      get {
-        return this.LastLoginDateField;
-      }
-      set {
-        if ((this.LastLoginDateField.Equals(value) != true)) {
-          this.LastLoginDateField = value;
-          this.RaisePropertyChanged("LastLoginDate");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.DateTime LastPasswordChangedDate {
-      get {
-        return this.LastPasswordChangedDateField;
-      }
-      set {
-        if ((this.LastPasswordChangedDateField.Equals(value) != true)) {
-          this.LastPasswordChangedDateField = value;
-          this.RaisePropertyChanged("LastPasswordChangedDate");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string UserName {
-      get {
-        return this.UserNameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.UserNameField, value) != true)) {
-          this.UserNameField = value;
-          this.RaisePropertyChanged("UserName");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "UserGroup", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class UserGroup : HeuristicLab.Clients.Access.UserGroupBase {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string NameField;
-
-    [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 = "LightweightUser", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class LightweightUser : HeuristicLab.Clients.Access.UserGroupBase {
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string EMailField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string FullNameField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GroupsField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> RolesField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private string UserNameField;
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string EMail {
-      get {
-        return this.EMailField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.EMailField, value) != true)) {
-          this.EMailField = value;
-          this.RaisePropertyChanged("EMail");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string FullName {
-      get {
-        return this.FullNameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.FullNameField, value) != true)) {
-          this.FullNameField = value;
-          this.RaisePropertyChanged("FullName");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> Groups {
-      get {
-        return this.GroupsField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.GroupsField, value) != true)) {
-          this.GroupsField = value;
-          this.RaisePropertyChanged("Groups");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> Roles {
-      get {
-        return this.RolesField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.RolesField, value) != true)) {
-          this.RolesField = value;
-          this.RaisePropertyChanged("Roles");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public string UserName {
-      get {
-        return this.UserNameField;
-      }
-      set {
-        if ((object.ReferenceEquals(this.UserNameField, value) != true)) {
-          this.UserNameField = value;
-          this.RaisePropertyChanged("UserName");
-        }
-      }
-    }
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-  [System.Runtime.Serialization.DataContractAttribute(Name = "UserGroupMapping", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class UserGroupMapping : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    [System.NonSerializedAttribute()]
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid ChildField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid ParentField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid Child {
-      get {
-        return this.ChildField;
-      }
-      set {
-        if ((this.ChildField.Equals(value) != true)) {
-          this.ChildField = value;
-          this.RaisePropertyChanged("Child");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid Parent {
-      get {
-        return this.ParentField;
-      }
-      set {
-        if ((this.ParentField.Equals(value) != true)) {
-          this.ParentField = value;
-          this.RaisePropertyChanged("Parent");
-        }
-      }
-    }
-
-    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 = "ClientGroupMapping", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
-      "")]
-  [System.SerializableAttribute()]
-  public partial class ClientGroupMapping : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
-
-    [System.NonSerializedAttribute()]
-    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid ChildField;
-
-    [System.Runtime.Serialization.OptionalFieldAttribute()]
-    private System.Guid ParentField;
-
-    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
-      get {
-        return this.extensionDataField;
-      }
-      set {
-        this.extensionDataField = value;
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid Child {
-      get {
-        return this.ChildField;
-      }
-      set {
-        if ((this.ChildField.Equals(value) != true)) {
-          this.ChildField = value;
-          this.RaisePropertyChanged("Child");
-        }
-      }
-    }
-
-    [System.Runtime.Serialization.DataMemberAttribute()]
-    public System.Guid Parent {
-      get {
-        return this.ParentField;
-      }
-      set {
-        if ((this.ParentField.Equals(value) != true)) {
-          this.ParentField = value;
-          this.RaisePropertyChanged("Parent");
-        }
-      }
-    }
-
-    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-
-    protected void RaisePropertyChanged(string propertyName) {
-      System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-      if ((propertyChanged != null)) {
-        propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-      }
-    }
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-  [System.ServiceModel.ServiceContractAttribute(ConfigurationName = "HeuristicLab.Clients.Access.IAccessService")]
-  public interface IAccessService {
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddUserGroupBaseToGroup", ReplyAction = "http://tempuri.org/IAccessService/AddUserGroupBaseToGroupResponse")]
-    void AddUserGroupBaseToGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/RemoveUserGroupBaseFromGroup", ReplyAction = "http://tempuri.org/IAccessService/RemoveUserGroupBaseFromGroupResponse")]
-    void RemoveUserGroupBaseFromGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUsersAndGroups", ReplyAction = "http://tempuri.org/IAccessService/GetUsersAndGroupsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetUsersAndGroups();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllLeightweightUsersAndGroups", ReplyAction = "http://tempuri.org/IAccessService/GetAllLeightweightUsersAndGroupsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetAllLeightweightUsersAndGroups();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetLeightweightUsersAndGroups", ReplyAction = "http://tempuri.org/IAccessService/GetLeightweightUsersAndGroupsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetLeightweightUsersAndGroups(System.Collections.Generic.List<System.Guid> ids);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUserGroupMapping", ReplyAction = "http://tempuri.org/IAccessService/GetUserGroupMappingResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupMapping> GetUserGroupMapping();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUserGroupIdsOfGroup", ReplyAction = "http://tempuri.org/IAccessService/GetUserGroupIdsOfGroupResponse")]
-    System.Collections.Generic.List<System.Guid> GetUserGroupIdsOfGroup(System.Guid groupId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetRoles", ReplyAction = "http://tempuri.org/IAccessService/GetRolesResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRoles();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddRole", ReplyAction = "http://tempuri.org/IAccessService/AddRoleResponse")]
-    HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteRole", ReplyAction = "http://tempuri.org/IAccessService/DeleteRoleResponse")]
-    void DeleteRole(HeuristicLab.Clients.Access.Role role);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUserRoles", ReplyAction = "http://tempuri.org/IAccessService/GetUserRolesResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetUserRoles(HeuristicLab.Clients.Access.User user);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddRoleToGroup", ReplyAction = "http://tempuri.org/IAccessService/AddRoleToGroupResponse")]
-    void AddRoleToGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/RemoveRoleFromGroup", ReplyAction = "http://tempuri.org/IAccessService/RemoveRoleFromGroupResponse")]
-    void RemoveRoleFromGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/ReportError", ReplyAction = "http://tempuri.org/IAccessService/ReportErrorResponse")]
-    void ReportError(HeuristicLab.Clients.Access.ClientError error);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientErrors", ReplyAction = "http://tempuri.org/IAccessService/GetClientErrorsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetClientErrors();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetLastClientErrors", ReplyAction = "http://tempuri.org/IAccessService/GetLastClientErrorsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetLastClientErrors(System.DateTime startDate);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteError", ReplyAction = "http://tempuri.org/IAccessService/DeleteErrorResponse")]
-    void DeleteError(HeuristicLab.Clients.Access.ClientError error);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/ClientExists", ReplyAction = "http://tempuri.org/IAccessService/ClientExistsResponse")]
-    bool ClientExists(System.Guid id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClient", ReplyAction = "http://tempuri.org/IAccessService/GetClientResponse")]
-    HeuristicLab.Clients.Access.Client GetClient(System.Guid id);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClients", ReplyAction = "http://tempuri.org/IAccessService/GetClientsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetClients(System.Collections.Generic.List<System.Guid> ids);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllClients", ReplyAction = "http://tempuri.org/IAccessService/GetAllClientsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetAllClients();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddClient", ReplyAction = "http://tempuri.org/IAccessService/AddClientResponse")]
-    void AddClient(HeuristicLab.Clients.Access.Client client);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/UpdateClient", ReplyAction = "http://tempuri.org/IAccessService/UpdateClientResponse")]
-    void UpdateClient(HeuristicLab.Clients.Access.Client client);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteClient", ReplyAction = "http://tempuri.org/IAccessService/DeleteClientResponse")]
-    void DeleteClient(HeuristicLab.Clients.Access.Client client);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllClientGroups", ReplyAction = "http://tempuri.org/IAccessService/GetAllClientGroupsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetAllClientGroups();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientGroups", ReplyAction = "http://tempuri.org/IAccessService/GetClientGroupsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetClientGroups(System.Collections.Generic.List<System.Guid> ids);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddClientGroup", ReplyAction = "http://tempuri.org/IAccessService/AddClientGroupResponse")]
-    System.Guid AddClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/UpdateClientGroup", ReplyAction = "http://tempuri.org/IAccessService/UpdateClientGroupResponse")]
-    void UpdateClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteClientGroup", ReplyAction = "http://tempuri.org/IAccessService/DeleteClientGroupResponse")]
-    void DeleteClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddResourceToGroup", ReplyAction = "http://tempuri.org/IAccessService/AddResourceToGroupResponse")]
-    void AddResourceToGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/RemoveResourceFromGroup", ReplyAction = "http://tempuri.org/IAccessService/RemoveResourceFromGroupResponse")]
-    void RemoveResourceFromGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientGroupMapping", ReplyAction = "http://tempuri.org/IAccessService/GetClientGroupMappingResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroupMapping> GetClientGroupMapping();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetResources", ReplyAction = "http://tempuri.org/IAccessService/GetResourcesResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.Resource> GetResources();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetLastClientLog", ReplyAction = "http://tempuri.org/IAccessService/GetLastClientLogResponse")]
-    HeuristicLab.Clients.Access.ClientLog GetLastClientLog(System.Guid clientId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientLogs", ReplyAction = "http://tempuri.org/IAccessService/GetClientLogsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogs(System.Guid clientId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetClientLogsSince", ReplyAction = "http://tempuri.org/IAccessService/GetClientLogsSinceResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogsSince(System.DateTime startDate);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddClientLog", ReplyAction = "http://tempuri.org/IAccessService/AddClientLogResponse")]
-    void AddClientLog(HeuristicLab.Clients.Access.ClientLog log);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteClientLog", ReplyAction = "http://tempuri.org/IAccessService/DeleteClientLogResponse")]
-    void DeleteClientLog(HeuristicLab.Clients.Access.ClientLog log);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/Login", ReplyAction = "http://tempuri.org/IAccessService/LoginResponse")]
-    HeuristicLab.Clients.Access.LightweightUser Login();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetGroupsOfCurrentUser", ReplyAction = "http://tempuri.org/IAccessService/GetGroupsOfCurrentUserResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetGroupsOfCurrentUser();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetRolesOfCurrentUser", ReplyAction = "http://tempuri.org/IAccessService/GetRolesOfCurrentUserResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRolesOfCurrentUser();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllLightweightUsers", ReplyAction = "http://tempuri.org/IAccessService/GetAllLightweightUsersResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetAllLightweightUsers();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetLightweightUsers", ReplyAction = "http://tempuri.org/IAccessService/GetLightweightUsersResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetLightweightUsers(System.Collections.Generic.List<System.Guid> ids);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/UpdateLightweightUser", ReplyAction = "http://tempuri.org/IAccessService/UpdateLightweightUserResponse")]
-    void UpdateLightweightUser(HeuristicLab.Clients.Access.LightweightUser user);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllUsers", ReplyAction = "http://tempuri.org/IAccessService/GetAllUsersResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUsers", ReplyAction = "http://tempuri.org/IAccessService/GetUsersResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetUsers(System.Collections.Generic.List<System.Guid> ids);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddUser", ReplyAction = "http://tempuri.org/IAccessService/AddUserResponse")]
-    HeuristicLab.Clients.Access.User AddUser(HeuristicLab.Clients.Access.User user);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteUser", ReplyAction = "http://tempuri.org/IAccessService/DeleteUserResponse")]
-    void DeleteUser(HeuristicLab.Clients.Access.User user);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/UpdateUser", ReplyAction = "http://tempuri.org/IAccessService/UpdateUserResponse")]
-    void UpdateUser(HeuristicLab.Clients.Access.User user);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddUserToRole", ReplyAction = "http://tempuri.org/IAccessService/AddUserToRoleResponse")]
-    void AddUserToRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/RemoveUserFromRole", ReplyAction = "http://tempuri.org/IAccessService/RemoveUserFromRoleResponse")]
-    void RemoveUserFromRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/ChangePassword", ReplyAction = "http://tempuri.org/IAccessService/ChangePasswordResponse")]
-    bool ChangePassword(System.Guid userId, string oldPassword, string newPassword);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/ResetPassword", ReplyAction = "http://tempuri.org/IAccessService/ResetPasswordResponse")]
-    string ResetPassword(System.Guid userId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetAllUserGroups", ReplyAction = "http://tempuri.org/IAccessService/GetAllUserGroupsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetAllUserGroups();
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUserGroupsOfUser", ReplyAction = "http://tempuri.org/IAccessService/GetUserGroupsOfUserResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroupsOfUser(System.Guid userId);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/GetUserGroups", ReplyAction = "http://tempuri.org/IAccessService/GetUserGroupsResponse")]
-    System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroups(System.Collections.Generic.List<System.Guid> ids);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/AddUserGroup", ReplyAction = "http://tempuri.org/IAccessService/AddUserGroupResponse")]
-    System.Guid AddUserGroup(HeuristicLab.Clients.Access.UserGroup group);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/UpdateUserGroup", ReplyAction = "http://tempuri.org/IAccessService/UpdateUserGroupResponse")]
-    void UpdateUserGroup(HeuristicLab.Clients.Access.UserGroup group);
-
-    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAccessService/DeleteUserGroup", ReplyAction = "http://tempuri.org/IAccessService/DeleteUserGroupResponse")]
-    void DeleteUserGroup(HeuristicLab.Clients.Access.UserGroup group);
-  }
-
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-  public interface IAccessServiceChannel : HeuristicLab.Clients.Access.IAccessService, System.ServiceModel.IClientChannel {
-  }
-
-  [System.Diagnostics.DebuggerStepThroughAttribute()]
-  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-  public partial class AccessServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.Access.IAccessService>, HeuristicLab.Clients.Access.IAccessService {
-
-    public AccessServiceClient() {
-    }
-
-    public AccessServiceClient(string endpointConfigurationName) :
-      base(endpointConfigurationName) {
-    }
-
-    public AccessServiceClient(string endpointConfigurationName, string remoteAddress) :
-      base(endpointConfigurationName, remoteAddress) {
-    }
-
-    public AccessServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
-      base(endpointConfigurationName, remoteAddress) {
-    }
-
-    public AccessServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
-      base(binding, remoteAddress) {
-    }
-
-    public void AddUserGroupBaseToGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group) {
-      base.Channel.AddUserGroupBaseToGroup(resource, group);
-    }
-
-    public void RemoveUserGroupBaseFromGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group) {
-      base.Channel.RemoveUserGroupBaseFromGroup(resource, group);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetUsersAndGroups() {
-      return base.Channel.GetUsersAndGroups();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetAllLeightweightUsersAndGroups() {
-      return base.Channel.GetAllLeightweightUsersAndGroups();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetLeightweightUsersAndGroups(System.Collections.Generic.List<System.Guid> ids) {
-      return base.Channel.GetLeightweightUsersAndGroups(ids);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupMapping> GetUserGroupMapping() {
-      return base.Channel.GetUserGroupMapping();
-    }
-
-    public System.Collections.Generic.List<System.Guid> GetUserGroupIdsOfGroup(System.Guid groupId) {
-      return base.Channel.GetUserGroupIdsOfGroup(groupId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRoles() {
-      return base.Channel.GetRoles();
-    }
-
-    public HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role) {
-      return base.Channel.AddRole(role);
-    }
-
-    public void DeleteRole(HeuristicLab.Clients.Access.Role role) {
-      base.Channel.DeleteRole(role);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetUserRoles(HeuristicLab.Clients.Access.User user) {
-      return base.Channel.GetUserRoles(user);
-    }
-
-    public void AddRoleToGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role) {
-      base.Channel.AddRoleToGroup(userGroup, role);
-    }
-
-    public void RemoveRoleFromGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role) {
-      base.Channel.RemoveRoleFromGroup(userGroup, role);
-    }
-
-    public void ReportError(HeuristicLab.Clients.Access.ClientError error) {
-      base.Channel.ReportError(error);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetClientErrors() {
-      return base.Channel.GetClientErrors();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetLastClientErrors(System.DateTime startDate) {
-      return base.Channel.GetLastClientErrors(startDate);
-    }
-
-    public void DeleteError(HeuristicLab.Clients.Access.ClientError error) {
-      base.Channel.DeleteError(error);
-    }
-
-    public bool ClientExists(System.Guid id) {
-      return base.Channel.ClientExists(id);
-    }
-
-    public HeuristicLab.Clients.Access.Client GetClient(System.Guid id) {
-      return base.Channel.GetClient(id);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetClients(System.Collections.Generic.List<System.Guid> ids) {
-      return base.Channel.GetClients(ids);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetAllClients() {
-      return base.Channel.GetAllClients();
-    }
-
-    public void AddClient(HeuristicLab.Clients.Access.Client client) {
-      base.Channel.AddClient(client);
-    }
-
-    public void UpdateClient(HeuristicLab.Clients.Access.Client client) {
-      base.Channel.UpdateClient(client);
-    }
-
-    public void DeleteClient(HeuristicLab.Clients.Access.Client client) {
-      base.Channel.DeleteClient(client);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetAllClientGroups() {
-      return base.Channel.GetAllClientGroups();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetClientGroups(System.Collections.Generic.List<System.Guid> ids) {
-      return base.Channel.GetClientGroups(ids);
-    }
-
-    public System.Guid AddClientGroup(HeuristicLab.Clients.Access.ClientGroup group) {
-      return base.Channel.AddClientGroup(group);
-    }
-
-    public void UpdateClientGroup(HeuristicLab.Clients.Access.ClientGroup group) {
-      base.Channel.UpdateClientGroup(group);
-    }
-
-    public void DeleteClientGroup(HeuristicLab.Clients.Access.ClientGroup group) {
-      base.Channel.DeleteClientGroup(group);
-    }
-
-    public void AddResourceToGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group) {
-      base.Channel.AddResourceToGroup(resource, group);
-    }
-
-    public void RemoveResourceFromGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group) {
-      base.Channel.RemoveResourceFromGroup(resource, group);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroupMapping> GetClientGroupMapping() {
-      return base.Channel.GetClientGroupMapping();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Resource> GetResources() {
-      return base.Channel.GetResources();
-    }
-
-    public HeuristicLab.Clients.Access.ClientLog GetLastClientLog(System.Guid clientId) {
-      return base.Channel.GetLastClientLog(clientId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogs(System.Guid clientId) {
-      return base.Channel.GetClientLogs(clientId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogsSince(System.DateTime startDate) {
-      return base.Channel.GetClientLogsSince(startDate);
-    }
-
-    public void AddClientLog(HeuristicLab.Clients.Access.ClientLog log) {
-      base.Channel.AddClientLog(log);
-    }
-
-    public void DeleteClientLog(HeuristicLab.Clients.Access.ClientLog log) {
-      base.Channel.DeleteClientLog(log);
-    }
-
-    public HeuristicLab.Clients.Access.LightweightUser Login() {
-      return base.Channel.Login();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetGroupsOfCurrentUser() {
-      return base.Channel.GetGroupsOfCurrentUser();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRolesOfCurrentUser() {
-      return base.Channel.GetRolesOfCurrentUser();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetAllLightweightUsers() {
-      return base.Channel.GetAllLightweightUsers();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetLightweightUsers(System.Collections.Generic.List<System.Guid> ids) {
-      return base.Channel.GetLightweightUsers(ids);
-    }
-
-    public void UpdateLightweightUser(HeuristicLab.Clients.Access.LightweightUser user) {
-      base.Channel.UpdateLightweightUser(user);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers() {
-      return base.Channel.GetAllUsers();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetUsers(System.Collections.Generic.List<System.Guid> ids) {
-      return base.Channel.GetUsers(ids);
-    }
-
-    public HeuristicLab.Clients.Access.User AddUser(HeuristicLab.Clients.Access.User user) {
-      return base.Channel.AddUser(user);
-    }
-
-    public void DeleteUser(HeuristicLab.Clients.Access.User user) {
-      base.Channel.DeleteUser(user);
-    }
-
-    public void UpdateUser(HeuristicLab.Clients.Access.User user) {
-      base.Channel.UpdateUser(user);
-    }
-
-    public void AddUserToRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user) {
-      base.Channel.AddUserToRole(role, user);
-    }
-
-    public void RemoveUserFromRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user) {
-      base.Channel.RemoveUserFromRole(role, user);
-    }
-
-    public bool ChangePassword(System.Guid userId, string oldPassword, string newPassword) {
-      return base.Channel.ChangePassword(userId, oldPassword, newPassword);
-    }
-
-    public string ResetPassword(System.Guid userId) {
-      return base.Channel.ResetPassword(userId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetAllUserGroups() {
-      return base.Channel.GetAllUserGroups();
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroupsOfUser(System.Guid userId) {
-      return base.Channel.GetUserGroupsOfUser(userId);
-    }
-
-    public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroups(System.Collections.Generic.List<System.Guid> ids) {
-      return base.Channel.GetUserGroups(ids);
-    }
-
-    public System.Guid AddUserGroup(HeuristicLab.Clients.Access.UserGroup group) {
-      return base.Channel.AddUserGroup(group);
-    }
-
-    public void UpdateUserGroup(HeuristicLab.Clients.Access.UserGroup group) {
-      base.Channel.UpdateUserGroup(group);
-    }
-
-    public void DeleteUserGroup(HeuristicLab.Clients.Access.UserGroup group) {
-      base.Channel.DeleteUserGroup(group);
-    }
-  }
+namespace HeuristicLab.Clients.Access
+{
+    using System.Runtime.Serialization;
+    using System;
+    
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="AccessItem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientConfiguration))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientType))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Country))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.OperatingSystem))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientLog))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroupBase))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.LightweightUser))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroup))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Role))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientError))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Resource))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientGroup))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Client))]
+    public partial class AccessItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        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="ClientConfiguration", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class ClientConfiguration : HeuristicLab.Clients.Access.AccessItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string DescriptionField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string HashField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid IdField;
+        
+        [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 Hash
+        {
+            get
+            {
+                return this.HashField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.HashField, value) != true))
+                {
+                    this.HashField = value;
+                    this.RaisePropertyChanged("Hash");
+                }
+            }
+        }
+        
+        [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");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ClientType", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class ClientType : HeuristicLab.Clients.Access.AccessItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid IdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string NameField;
+        
+        [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");
+                }
+            }
+        }
+        
+        [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="Country", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class Country : HeuristicLab.Clients.Access.AccessItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid IdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string NameField;
+        
+        [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");
+                }
+            }
+        }
+        
+        [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="OperatingSystem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class OperatingSystem : HeuristicLab.Clients.Access.AccessItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid IdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string NameField;
+        
+        [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");
+                }
+            }
+        }
+        
+        [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="ClientLog", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class ClientLog : HeuristicLab.Clients.Access.AccessItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string MessageField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ResourceIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime TimestampField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Message
+        {
+            get
+            {
+                return this.MessageField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.MessageField, value) != true))
+                {
+                    this.MessageField = value;
+                    this.RaisePropertyChanged("Message");
+                }
+            }
+        }
+        
+        [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 Timestamp
+        {
+            get
+            {
+                return this.TimestampField;
+            }
+            set
+            {
+                if ((this.TimestampField.Equals(value) != true))
+                {
+                    this.TimestampField = value;
+                    this.RaisePropertyChanged("Timestamp");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="UserGroupBase", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.LightweightUser))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.UserGroup))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.User))]
+    public partial class UserGroupBase : HeuristicLab.Clients.Access.AccessItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid IdField;
+        
+        [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");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="LightweightUser", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class LightweightUser : HeuristicLab.Clients.Access.UserGroupBase
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string EMailField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string FullNameField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GroupsField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> RolesField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string UserNameField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string EMail
+        {
+            get
+            {
+                return this.EMailField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.EMailField, value) != true))
+                {
+                    this.EMailField = value;
+                    this.RaisePropertyChanged("EMail");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string FullName
+        {
+            get
+            {
+                return this.FullNameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.FullNameField, value) != true))
+                {
+                    this.FullNameField = value;
+                    this.RaisePropertyChanged("FullName");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> Groups
+        {
+            get
+            {
+                return this.GroupsField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.GroupsField, value) != true))
+                {
+                    this.GroupsField = value;
+                    this.RaisePropertyChanged("Groups");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> Roles
+        {
+            get
+            {
+                return this.RolesField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.RolesField, value) != true))
+                {
+                    this.RolesField = value;
+                    this.RaisePropertyChanged("Roles");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string UserName
+        {
+            get
+            {
+                return this.UserNameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.UserNameField, value) != true))
+                {
+                    this.UserNameField = value;
+                    this.RaisePropertyChanged("UserName");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="UserGroup", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class UserGroup : HeuristicLab.Clients.Access.UserGroupBase
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string NameField;
+        
+        [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="Role", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class Role : HeuristicLab.Clients.Access.AccessItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string NameField;
+        
+        [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="User", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class User : HeuristicLab.Clients.Access.UserGroupBase
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string CommentField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime CreationDateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string EmailField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string FullNameField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private bool IsApprovedField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime LastActivityDateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime LastLoginDateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime LastPasswordChangedDateField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string UserNameField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Comment
+        {
+            get
+            {
+                return this.CommentField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.CommentField, value) != true))
+                {
+                    this.CommentField = value;
+                    this.RaisePropertyChanged("Comment");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime CreationDate
+        {
+            get
+            {
+                return this.CreationDateField;
+            }
+            set
+            {
+                if ((this.CreationDateField.Equals(value) != true))
+                {
+                    this.CreationDateField = value;
+                    this.RaisePropertyChanged("CreationDate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Email
+        {
+            get
+            {
+                return this.EmailField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.EmailField, value) != true))
+                {
+                    this.EmailField = value;
+                    this.RaisePropertyChanged("Email");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string FullName
+        {
+            get
+            {
+                return this.FullNameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.FullNameField, value) != true))
+                {
+                    this.FullNameField = value;
+                    this.RaisePropertyChanged("FullName");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public bool IsApproved
+        {
+            get
+            {
+                return this.IsApprovedField;
+            }
+            set
+            {
+                if ((this.IsApprovedField.Equals(value) != true))
+                {
+                    this.IsApprovedField = value;
+                    this.RaisePropertyChanged("IsApproved");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime LastActivityDate
+        {
+            get
+            {
+                return this.LastActivityDateField;
+            }
+            set
+            {
+                if ((this.LastActivityDateField.Equals(value) != true))
+                {
+                    this.LastActivityDateField = value;
+                    this.RaisePropertyChanged("LastActivityDate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime LastLoginDate
+        {
+            get
+            {
+                return this.LastLoginDateField;
+            }
+            set
+            {
+                if ((this.LastLoginDateField.Equals(value) != true))
+                {
+                    this.LastLoginDateField = value;
+                    this.RaisePropertyChanged("LastLoginDate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime LastPasswordChangedDate
+        {
+            get
+            {
+                return this.LastPasswordChangedDateField;
+            }
+            set
+            {
+                if ((this.LastPasswordChangedDateField.Equals(value) != true))
+                {
+                    this.LastPasswordChangedDateField = value;
+                    this.RaisePropertyChanged("LastPasswordChangedDate");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string UserName
+        {
+            get
+            {
+                return this.UserNameField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.UserNameField, value) != true))
+                {
+                    this.UserNameField = value;
+                    this.RaisePropertyChanged("UserName");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ClientError", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class ClientError : HeuristicLab.Clients.Access.AccessItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ClientIdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string ConfigDumpField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string ExceptionField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid IdField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime TimestampField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string UserCommentField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid UserIdField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid ClientId
+        {
+            get
+            {
+                return this.ClientIdField;
+            }
+            set
+            {
+                if ((this.ClientIdField.Equals(value) != true))
+                {
+                    this.ClientIdField = value;
+                    this.RaisePropertyChanged("ClientId");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string ConfigDump
+        {
+            get
+            {
+                return this.ConfigDumpField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.ConfigDumpField, value) != true))
+                {
+                    this.ConfigDumpField = value;
+                    this.RaisePropertyChanged("ConfigDump");
+                }
+            }
+        }
+        
+        [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 Id
+        {
+            get
+            {
+                return this.IdField;
+            }
+            set
+            {
+                if ((this.IdField.Equals(value) != true))
+                {
+                    this.IdField = value;
+                    this.RaisePropertyChanged("Id");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime Timestamp
+        {
+            get
+            {
+                return this.TimestampField;
+            }
+            set
+            {
+                if ((this.TimestampField.Equals(value) != true))
+                {
+                    this.TimestampField = value;
+                    this.RaisePropertyChanged("Timestamp");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string UserComment
+        {
+            get
+            {
+                return this.UserCommentField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.UserCommentField, value) != true))
+                {
+                    this.UserCommentField = value;
+                    this.RaisePropertyChanged("UserComment");
+                }
+            }
+        }
+        
+        [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.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.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.ClientGroup))]
+    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Clients.Access.Client))]
+    public partial class Resource : HeuristicLab.Clients.Access.AccessItem
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string DescriptionField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid IdField;
+        
+        [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 System.Guid Id
+        {
+            get
+            {
+                return this.IdField;
+            }
+            set
+            {
+                if ((this.IdField.Equals(value) != true))
+                {
+                    this.IdField = value;
+                    this.RaisePropertyChanged("Id");
+                }
+            }
+        }
+        
+        [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="ClientGroup", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class ClientGroup : HeuristicLab.Clients.Access.Resource
+    {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="Client", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class Client : HeuristicLab.Clients.Access.Resource
+    {
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Clients.Access.ClientConfiguration ClientConfigurationField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Clients.Access.ClientType ClientTypeField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Clients.Access.Country CountryField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string HeuristicLabVersionField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int MemorySizeField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private int NumberOfCoresField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private HeuristicLab.Clients.Access.OperatingSystem OperatingSystemField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private double PerformanceValueField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string ProcessorTypeField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime TimestampField;
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.Access.ClientConfiguration ClientConfiguration
+        {
+            get
+            {
+                return this.ClientConfigurationField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.ClientConfigurationField, value) != true))
+                {
+                    this.ClientConfigurationField = value;
+                    this.RaisePropertyChanged("ClientConfiguration");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.Access.ClientType ClientType
+        {
+            get
+            {
+                return this.ClientTypeField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.ClientTypeField, value) != true))
+                {
+                    this.ClientTypeField = value;
+                    this.RaisePropertyChanged("ClientType");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.Access.Country Country
+        {
+            get
+            {
+                return this.CountryField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.CountryField, value) != true))
+                {
+                    this.CountryField = value;
+                    this.RaisePropertyChanged("Country");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string HeuristicLabVersion
+        {
+            get
+            {
+                return this.HeuristicLabVersionField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.HeuristicLabVersionField, value) != true))
+                {
+                    this.HeuristicLabVersionField = value;
+                    this.RaisePropertyChanged("HeuristicLabVersion");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int MemorySize
+        {
+            get
+            {
+                return this.MemorySizeField;
+            }
+            set
+            {
+                if ((this.MemorySizeField.Equals(value) != true))
+                {
+                    this.MemorySizeField = value;
+                    this.RaisePropertyChanged("MemorySize");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public int NumberOfCores
+        {
+            get
+            {
+                return this.NumberOfCoresField;
+            }
+            set
+            {
+                if ((this.NumberOfCoresField.Equals(value) != true))
+                {
+                    this.NumberOfCoresField = value;
+                    this.RaisePropertyChanged("NumberOfCores");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public HeuristicLab.Clients.Access.OperatingSystem OperatingSystem
+        {
+            get
+            {
+                return this.OperatingSystemField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.OperatingSystemField, value) != true))
+                {
+                    this.OperatingSystemField = value;
+                    this.RaisePropertyChanged("OperatingSystem");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public double PerformanceValue
+        {
+            get
+            {
+                return this.PerformanceValueField;
+            }
+            set
+            {
+                if ((this.PerformanceValueField.Equals(value) != true))
+                {
+                    this.PerformanceValueField = value;
+                    this.RaisePropertyChanged("PerformanceValue");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string ProcessorType
+        {
+            get
+            {
+                return this.ProcessorTypeField;
+            }
+            set
+            {
+                if ((object.ReferenceEquals(this.ProcessorTypeField, value) != true))
+                {
+                    this.ProcessorTypeField = value;
+                    this.RaisePropertyChanged("ProcessorType");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime Timestamp
+        {
+            get
+            {
+                return this.TimestampField;
+            }
+            set
+            {
+                if ((this.TimestampField.Equals(value) != true))
+                {
+                    this.TimestampField = value;
+                    this.RaisePropertyChanged("Timestamp");
+                }
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="ClientGroupMapping", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class ClientGroupMapping : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ChildField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ParentField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid Child
+        {
+            get
+            {
+                return this.ChildField;
+            }
+            set
+            {
+                if ((this.ChildField.Equals(value) != true))
+                {
+                    this.ChildField = value;
+                    this.RaisePropertyChanged("Child");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid Parent
+        {
+            get
+            {
+                return this.ParentField;
+            }
+            set
+            {
+                if ((this.ParentField.Equals(value) != true))
+                {
+                    this.ParentField = value;
+                    this.RaisePropertyChanged("Parent");
+                }
+            }
+        }
+        
+        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="UserGroupMapping", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Access.DataTransfer" +
+        "")]
+    [System.SerializableAttribute()]
+    public partial class UserGroupMapping : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+    {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ChildField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.Guid ParentField;
+        
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
+        {
+            get
+            {
+                return this.extensionDataField;
+            }
+            set
+            {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid Child
+        {
+            get
+            {
+                return this.ChildField;
+            }
+            set
+            {
+                if ((this.ChildField.Equals(value) != true))
+                {
+                    this.ChildField = value;
+                    this.RaisePropertyChanged("Child");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.Guid Parent
+        {
+            get
+            {
+                return this.ParentField;
+            }
+            set
+            {
+                if ((this.ParentField.Equals(value) != true))
+                {
+                    this.ParentField = value;
+                    this.RaisePropertyChanged("Parent");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName)
+        {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null))
+            {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="HeuristicLab.Clients.Access.IAccessService")]
+    public interface IAccessService
+    {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/ClientExists", ReplyAction="http://tempuri.org/IAccessService/ClientExistsResponse")]
+        bool ClientExists(System.Guid id);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClient", ReplyAction="http://tempuri.org/IAccessService/GetClientResponse")]
+        HeuristicLab.Clients.Access.Client GetClient(System.Guid id);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClients", ReplyAction="http://tempuri.org/IAccessService/GetClientsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetClients(System.Collections.Generic.List<System.Guid> ids);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllClients", ReplyAction="http://tempuri.org/IAccessService/GetAllClientsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetAllClients();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddClient", ReplyAction="http://tempuri.org/IAccessService/AddClientResponse")]
+        void AddClient(HeuristicLab.Clients.Access.Client client);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/UpdateClient", ReplyAction="http://tempuri.org/IAccessService/UpdateClientResponse")]
+        void UpdateClient(HeuristicLab.Clients.Access.Client client);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteClient", ReplyAction="http://tempuri.org/IAccessService/DeleteClientResponse")]
+        void DeleteClient(HeuristicLab.Clients.Access.Client client);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllClientGroups", ReplyAction="http://tempuri.org/IAccessService/GetAllClientGroupsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetAllClientGroups();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientGroups", ReplyAction="http://tempuri.org/IAccessService/GetClientGroupsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetClientGroups(System.Collections.Generic.List<System.Guid> ids);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddClientGroup", ReplyAction="http://tempuri.org/IAccessService/AddClientGroupResponse")]
+        System.Guid AddClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/UpdateClientGroup", ReplyAction="http://tempuri.org/IAccessService/UpdateClientGroupResponse")]
+        void UpdateClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteClientGroup", ReplyAction="http://tempuri.org/IAccessService/DeleteClientGroupResponse")]
+        void DeleteClientGroup(HeuristicLab.Clients.Access.ClientGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddResourceToGroup", ReplyAction="http://tempuri.org/IAccessService/AddResourceToGroupResponse")]
+        void AddResourceToGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/RemoveResourceFromGroup", ReplyAction="http://tempuri.org/IAccessService/RemoveResourceFromGroupResponse")]
+        void RemoveResourceFromGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientGroupMapping", ReplyAction="http://tempuri.org/IAccessService/GetClientGroupMappingResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroupMapping> GetClientGroupMapping();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetResources", ReplyAction="http://tempuri.org/IAccessService/GetResourcesResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.Resource> GetResources();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetLastClientLog", ReplyAction="http://tempuri.org/IAccessService/GetLastClientLogResponse")]
+        HeuristicLab.Clients.Access.ClientLog GetLastClientLog(System.Guid clientId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientLogs", ReplyAction="http://tempuri.org/IAccessService/GetClientLogsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogs(System.Guid clientId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientLogsSince", ReplyAction="http://tempuri.org/IAccessService/GetClientLogsSinceResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogsSince(System.DateTime startDate);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddClientLog", ReplyAction="http://tempuri.org/IAccessService/AddClientLogResponse")]
+        void AddClientLog(HeuristicLab.Clients.Access.ClientLog log);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteClientLog", ReplyAction="http://tempuri.org/IAccessService/DeleteClientLogResponse")]
+        void DeleteClientLog(HeuristicLab.Clients.Access.ClientLog log);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/Login", ReplyAction="http://tempuri.org/IAccessService/LoginResponse")]
+        HeuristicLab.Clients.Access.LightweightUser Login();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetGroupsOfCurrentUser", ReplyAction="http://tempuri.org/IAccessService/GetGroupsOfCurrentUserResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetGroupsOfCurrentUser();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetRolesOfCurrentUser", ReplyAction="http://tempuri.org/IAccessService/GetRolesOfCurrentUserResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRolesOfCurrentUser();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllLightweightUsers", ReplyAction="http://tempuri.org/IAccessService/GetAllLightweightUsersResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetAllLightweightUsers();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetLightweightUsers", ReplyAction="http://tempuri.org/IAccessService/GetLightweightUsersResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetLightweightUsers(System.Collections.Generic.List<System.Guid> ids);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/UpdateLightweightUser", ReplyAction="http://tempuri.org/IAccessService/UpdateLightweightUserResponse")]
+        void UpdateLightweightUser(HeuristicLab.Clients.Access.LightweightUser user);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllUsers", ReplyAction="http://tempuri.org/IAccessService/GetAllUsersResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUsers", ReplyAction="http://tempuri.org/IAccessService/GetUsersResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetUsers(System.Collections.Generic.List<System.Guid> ids);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddUser", ReplyAction="http://tempuri.org/IAccessService/AddUserResponse")]
+        HeuristicLab.Clients.Access.User AddUser(HeuristicLab.Clients.Access.User user);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteUser", ReplyAction="http://tempuri.org/IAccessService/DeleteUserResponse")]
+        void DeleteUser(HeuristicLab.Clients.Access.User user);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/UpdateUser", ReplyAction="http://tempuri.org/IAccessService/UpdateUserResponse")]
+        void UpdateUser(HeuristicLab.Clients.Access.User user);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddUserToRole", ReplyAction="http://tempuri.org/IAccessService/AddUserToRoleResponse")]
+        void AddUserToRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/RemoveUserFromRole", ReplyAction="http://tempuri.org/IAccessService/RemoveUserFromRoleResponse")]
+        void RemoveUserFromRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/ChangePassword", ReplyAction="http://tempuri.org/IAccessService/ChangePasswordResponse")]
+        bool ChangePassword(System.Guid userId, string oldPassword, string newPassword);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/ResetPassword", ReplyAction="http://tempuri.org/IAccessService/ResetPasswordResponse")]
+        string ResetPassword(System.Guid userId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllUserGroups", ReplyAction="http://tempuri.org/IAccessService/GetAllUserGroupsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetAllUserGroups();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUserGroupsOfUser", ReplyAction="http://tempuri.org/IAccessService/GetUserGroupsOfUserResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroupsOfUser(System.Guid userId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUserGroups", ReplyAction="http://tempuri.org/IAccessService/GetUserGroupsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroups(System.Collections.Generic.List<System.Guid> ids);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddUserGroup", ReplyAction="http://tempuri.org/IAccessService/AddUserGroupResponse")]
+        System.Guid AddUserGroup(HeuristicLab.Clients.Access.UserGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/UpdateUserGroup", ReplyAction="http://tempuri.org/IAccessService/UpdateUserGroupResponse")]
+        void UpdateUserGroup(HeuristicLab.Clients.Access.UserGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteUserGroup", ReplyAction="http://tempuri.org/IAccessService/DeleteUserGroupResponse")]
+        void DeleteUserGroup(HeuristicLab.Clients.Access.UserGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddUserGroupBaseToGroup", ReplyAction="http://tempuri.org/IAccessService/AddUserGroupBaseToGroupResponse")]
+        void AddUserGroupBaseToGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/RemoveUserGroupBaseFromGroup", ReplyAction="http://tempuri.org/IAccessService/RemoveUserGroupBaseFromGroupResponse")]
+        void RemoveUserGroupBaseFromGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUsersAndGroups", ReplyAction="http://tempuri.org/IAccessService/GetUsersAndGroupsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetUsersAndGroups();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetAllLeightweightUsersAndGroups", ReplyAction="http://tempuri.org/IAccessService/GetAllLeightweightUsersAndGroupsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetAllLeightweightUsersAndGroups();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetLeightweightUsersAndGroups", ReplyAction="http://tempuri.org/IAccessService/GetLeightweightUsersAndGroupsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetLeightweightUsersAndGroups(System.Collections.Generic.List<System.Guid> ids);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUserGroupMapping", ReplyAction="http://tempuri.org/IAccessService/GetUserGroupMappingResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupMapping> GetUserGroupMapping();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUserGroupIdsOfGroup", ReplyAction="http://tempuri.org/IAccessService/GetUserGroupIdsOfGroupResponse")]
+        System.Collections.Generic.List<System.Guid> GetUserGroupIdsOfGroup(System.Guid groupId);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetRoles", ReplyAction="http://tempuri.org/IAccessService/GetRolesResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRoles();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddRole", ReplyAction="http://tempuri.org/IAccessService/AddRoleResponse")]
+        HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteRole", ReplyAction="http://tempuri.org/IAccessService/DeleteRoleResponse")]
+        void DeleteRole(HeuristicLab.Clients.Access.Role role);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetUserRoles", ReplyAction="http://tempuri.org/IAccessService/GetUserRolesResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetUserRoles(HeuristicLab.Clients.Access.User user);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/AddRoleToGroup", ReplyAction="http://tempuri.org/IAccessService/AddRoleToGroupResponse")]
+        void AddRoleToGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/RemoveRoleFromGroup", ReplyAction="http://tempuri.org/IAccessService/RemoveRoleFromGroupResponse")]
+        void RemoveRoleFromGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/ReportError", ReplyAction="http://tempuri.org/IAccessService/ReportErrorResponse")]
+        void ReportError(HeuristicLab.Clients.Access.ClientError error);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetClientErrors", ReplyAction="http://tempuri.org/IAccessService/GetClientErrorsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetClientErrors();
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/GetLastClientErrors", ReplyAction="http://tempuri.org/IAccessService/GetLastClientErrorsResponse")]
+        System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetLastClientErrors(System.DateTime startDate);
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAccessService/DeleteError", ReplyAction="http://tempuri.org/IAccessService/DeleteErrorResponse")]
+        void DeleteError(HeuristicLab.Clients.Access.ClientError error);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public interface IAccessServiceChannel : HeuristicLab.Clients.Access.IAccessService, System.ServiceModel.IClientChannel
+    {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class AccessServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Clients.Access.IAccessService>, HeuristicLab.Clients.Access.IAccessService
+    {
+        
+        public AccessServiceClient()
+        {
+        }
+        
+        public AccessServiceClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName)
+        {
+        }
+        
+        public AccessServiceClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public AccessServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress)
+        {
+        }
+        
+        public AccessServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress)
+        {
+        }
+        
+        public bool ClientExists(System.Guid id)
+        {
+            return base.Channel.ClientExists(id);
+        }
+        
+        public HeuristicLab.Clients.Access.Client GetClient(System.Guid id)
+        {
+            return base.Channel.GetClient(id);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetClients(System.Collections.Generic.List<System.Guid> ids)
+        {
+            return base.Channel.GetClients(ids);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Client> GetAllClients()
+        {
+            return base.Channel.GetAllClients();
+        }
+        
+        public void AddClient(HeuristicLab.Clients.Access.Client client)
+        {
+            base.Channel.AddClient(client);
+        }
+        
+        public void UpdateClient(HeuristicLab.Clients.Access.Client client)
+        {
+            base.Channel.UpdateClient(client);
+        }
+        
+        public void DeleteClient(HeuristicLab.Clients.Access.Client client)
+        {
+            base.Channel.DeleteClient(client);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetAllClientGroups()
+        {
+            return base.Channel.GetAllClientGroups();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroup> GetClientGroups(System.Collections.Generic.List<System.Guid> ids)
+        {
+            return base.Channel.GetClientGroups(ids);
+        }
+        
+        public System.Guid AddClientGroup(HeuristicLab.Clients.Access.ClientGroup group)
+        {
+            return base.Channel.AddClientGroup(group);
+        }
+        
+        public void UpdateClientGroup(HeuristicLab.Clients.Access.ClientGroup group)
+        {
+            base.Channel.UpdateClientGroup(group);
+        }
+        
+        public void DeleteClientGroup(HeuristicLab.Clients.Access.ClientGroup group)
+        {
+            base.Channel.DeleteClientGroup(group);
+        }
+        
+        public void AddResourceToGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group)
+        {
+            base.Channel.AddResourceToGroup(resource, group);
+        }
+        
+        public void RemoveResourceFromGroup(HeuristicLab.Clients.Access.Resource resource, HeuristicLab.Clients.Access.ClientGroup group)
+        {
+            base.Channel.RemoveResourceFromGroup(resource, group);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientGroupMapping> GetClientGroupMapping()
+        {
+            return base.Channel.GetClientGroupMapping();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Resource> GetResources()
+        {
+            return base.Channel.GetResources();
+        }
+        
+        public HeuristicLab.Clients.Access.ClientLog GetLastClientLog(System.Guid clientId)
+        {
+            return base.Channel.GetLastClientLog(clientId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogs(System.Guid clientId)
+        {
+            return base.Channel.GetClientLogs(clientId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientLog> GetClientLogsSince(System.DateTime startDate)
+        {
+            return base.Channel.GetClientLogsSince(startDate);
+        }
+        
+        public void AddClientLog(HeuristicLab.Clients.Access.ClientLog log)
+        {
+            base.Channel.AddClientLog(log);
+        }
+        
+        public void DeleteClientLog(HeuristicLab.Clients.Access.ClientLog log)
+        {
+            base.Channel.DeleteClientLog(log);
+        }
+        
+        public HeuristicLab.Clients.Access.LightweightUser Login()
+        {
+            return base.Channel.Login();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetGroupsOfCurrentUser()
+        {
+            return base.Channel.GetGroupsOfCurrentUser();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRolesOfCurrentUser()
+        {
+            return base.Channel.GetRolesOfCurrentUser();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetAllLightweightUsers()
+        {
+            return base.Channel.GetAllLightweightUsers();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.LightweightUser> GetLightweightUsers(System.Collections.Generic.List<System.Guid> ids)
+        {
+            return base.Channel.GetLightweightUsers(ids);
+        }
+        
+        public void UpdateLightweightUser(HeuristicLab.Clients.Access.LightweightUser user)
+        {
+            base.Channel.UpdateLightweightUser(user);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetAllUsers()
+        {
+            return base.Channel.GetAllUsers();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.User> GetUsers(System.Collections.Generic.List<System.Guid> ids)
+        {
+            return base.Channel.GetUsers(ids);
+        }
+        
+        public HeuristicLab.Clients.Access.User AddUser(HeuristicLab.Clients.Access.User user)
+        {
+            return base.Channel.AddUser(user);
+        }
+        
+        public void DeleteUser(HeuristicLab.Clients.Access.User user)
+        {
+            base.Channel.DeleteUser(user);
+        }
+        
+        public void UpdateUser(HeuristicLab.Clients.Access.User user)
+        {
+            base.Channel.UpdateUser(user);
+        }
+        
+        public void AddUserToRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user)
+        {
+            base.Channel.AddUserToRole(role, user);
+        }
+        
+        public void RemoveUserFromRole(HeuristicLab.Clients.Access.Role role, HeuristicLab.Clients.Access.User user)
+        {
+            base.Channel.RemoveUserFromRole(role, user);
+        }
+        
+        public bool ChangePassword(System.Guid userId, string oldPassword, string newPassword)
+        {
+            return base.Channel.ChangePassword(userId, oldPassword, newPassword);
+        }
+        
+        public string ResetPassword(System.Guid userId)
+        {
+            return base.Channel.ResetPassword(userId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetAllUserGroups()
+        {
+            return base.Channel.GetAllUserGroups();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroupsOfUser(System.Guid userId)
+        {
+            return base.Channel.GetUserGroupsOfUser(userId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroup> GetUserGroups(System.Collections.Generic.List<System.Guid> ids)
+        {
+            return base.Channel.GetUserGroups(ids);
+        }
+        
+        public System.Guid AddUserGroup(HeuristicLab.Clients.Access.UserGroup group)
+        {
+            return base.Channel.AddUserGroup(group);
+        }
+        
+        public void UpdateUserGroup(HeuristicLab.Clients.Access.UserGroup group)
+        {
+            base.Channel.UpdateUserGroup(group);
+        }
+        
+        public void DeleteUserGroup(HeuristicLab.Clients.Access.UserGroup group)
+        {
+            base.Channel.DeleteUserGroup(group);
+        }
+        
+        public void AddUserGroupBaseToGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group)
+        {
+            base.Channel.AddUserGroupBaseToGroup(resource, group);
+        }
+        
+        public void RemoveUserGroupBaseFromGroup(HeuristicLab.Clients.Access.UserGroupBase resource, HeuristicLab.Clients.Access.UserGroup group)
+        {
+            base.Channel.RemoveUserGroupBaseFromGroup(resource, group);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetUsersAndGroups()
+        {
+            return base.Channel.GetUsersAndGroups();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetAllLeightweightUsersAndGroups()
+        {
+            return base.Channel.GetAllLeightweightUsersAndGroups();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupBase> GetLeightweightUsersAndGroups(System.Collections.Generic.List<System.Guid> ids)
+        {
+            return base.Channel.GetLeightweightUsersAndGroups(ids);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.UserGroupMapping> GetUserGroupMapping()
+        {
+            return base.Channel.GetUserGroupMapping();
+        }
+        
+        public System.Collections.Generic.List<System.Guid> GetUserGroupIdsOfGroup(System.Guid groupId)
+        {
+            return base.Channel.GetUserGroupIdsOfGroup(groupId);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetRoles()
+        {
+            return base.Channel.GetRoles();
+        }
+        
+        public HeuristicLab.Clients.Access.Role AddRole(HeuristicLab.Clients.Access.Role role)
+        {
+            return base.Channel.AddRole(role);
+        }
+        
+        public void DeleteRole(HeuristicLab.Clients.Access.Role role)
+        {
+            base.Channel.DeleteRole(role);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.Role> GetUserRoles(HeuristicLab.Clients.Access.User user)
+        {
+            return base.Channel.GetUserRoles(user);
+        }
+        
+        public void AddRoleToGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role)
+        {
+            base.Channel.AddRoleToGroup(userGroup, role);
+        }
+        
+        public void RemoveRoleFromGroup(HeuristicLab.Clients.Access.UserGroup userGroup, HeuristicLab.Clients.Access.Role role)
+        {
+            base.Channel.RemoveRoleFromGroup(userGroup, role);
+        }
+        
+        public void ReportError(HeuristicLab.Clients.Access.ClientError error)
+        {
+            base.Channel.ReportError(error);
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetClientErrors()
+        {
+            return base.Channel.GetClientErrors();
+        }
+        
+        public System.Collections.Generic.List<HeuristicLab.Clients.Access.ClientError> GetLastClientErrors(System.DateTime startDate)
+        {
+            return base.Channel.GetLastClientErrors(startDate);
+        }
+        
+        public void DeleteError(HeuristicLab.Clients.Access.ClientError error)
+        {
+            base.Channel.DeleteError(error);
+        }
+    }
 }
