Index: branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/Application.cs
===================================================================
--- branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/Application.cs	(revision 4979)
+++ branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/Application.cs	(revision 5257)
@@ -1,11 +1,43 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab 
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 
+ * 
+ * This file is part of HeuristicLab. 
+ * 
+ * HeuristicLab is free software: you can redistribute it and/or modify 
+ * it under the terms of the GNU General Public License as published by 
+ * the Free Software Foundation, either version 3 of the License, or 
+ * (at your option) any later version. 
+ * 
+ * HeuristicLab is distributed in the hope that it will be useful, 
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ * GNU General Public License for more details. 
+ * 
+ * You should have received a copy of the GNU General Public License 
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 
+ */
+#endregion
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
 
-namespace HeuristicLab.Services.Authentication
-{
-    public partial class Application
-    {
+namespace HeuristicLab.Services.Authentication {
+  [Item("Application", "An application.")]
+  public partial class Application {
+    protected Application(Application original, Cloner cloner)
+      : base(original, cloner) {
+
     }
+
+    public Application() {
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Application(this, cloner);
+    }
+  }
 }
Index: branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/AuthenticationItem.cs
===================================================================
--- branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/AuthenticationItem.cs	(revision 5257)
+++ branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/AuthenticationItem.cs	(revision 5257)
@@ -0,0 +1,129 @@
+﻿#region License Information
+/* HeuristicLab 
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 
+ * 
+ * This file is part of HeuristicLab. 
+ * 
+ * HeuristicLab is free software: you can redistribute it and/or modify 
+ * it under the terms of the GNU General Public License as published by 
+ * the Free Software Foundation, either version 3 of the License, or 
+ * (at your option) any later version. 
+ * 
+ * HeuristicLab is distributed in the hope that it will be useful, 
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ * GNU General Public License for more details. 
+ * 
+ * You should have received a copy of the GNU General Public License 
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 
+ */
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ComponentModel;
+using HeuristicLab.Core;
+using System.Runtime.Serialization;
+using HeuristicLab.Common;
+using System.Drawing;
+
+namespace HeuristicLab.Services.Authentication {
+   [Item("AuthenticationItem", "Base class for all authentication items.")]
+  public partial class AuthenticationItem : IItem {
+
+    public virtual string ItemName {
+      get { return ItemAttribute.GetName(this.GetType()); }
+    }
+    public virtual string ItemDescription {
+      get { return ItemAttribute.GetDescription(this.GetType()); }
+    }
+    public Version ItemVersion {
+      get { return ItemAttribute.GetVersion(this.GetType()); }
+    }
+    public virtual Image ItemImage {
+      get {
+        if (Modified)
+          return HeuristicLab.Common.Resources.VS2008ImageLibrary.DatabaseModified;
+        else
+          return HeuristicLab.Common.Resources.VS2008ImageLibrary.Database;
+      }
+    }
+
+    protected AuthenticationItem(AuthenticationItem original, Cloner cloner) {
+      cloner.RegisterClonedObject(original, this);
+      modified = true;
+      Name = original.Name;
+      Id = original.Id;
+    }
+
+    protected AuthenticationItem() {
+      modified = true;
+    }
+
+
+    private bool modified;
+    public bool Modified {
+      get { return modified; }
+      private set {
+        if (value != modified) {
+          modified = value;
+          OnModifiedChanged();
+          RaisePropertyChanged("Modified");
+          OnItemImageChanged();
+          RaisePropertyChanged("ItemImage");
+        }
+      }
+    }
+
+    public void Store() {
+      if (AuthenticationClient.Instance.Store(this))
+        Modified = false;
+    }
+
+    protected void RaisePropertyChanged(string propertyName) {
+      OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
+      if ((propertyName != "Id") && (propertyName != "Modified")) {
+        Modified = true;
+      }
+    }
+  
+    protected virtual void OnPropertyChanged(PropertyChangedEventArgs e) {
+      PropertyChangedEventHandler handler = PropertyChanged;
+      if (handler != null) handler(this, e);
+    }
+
+    public event EventHandler ModifiedChanged;
+    protected virtual void OnModifiedChanged() {
+      EventHandler handler = ModifiedChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    [OnDeserialized]
+    private void OnDeserialized(StreamingContext context) {
+      modified = false;
+    }
+
+    public object Clone() {
+      return Clone(new Cloner());
+    }
+    public virtual IDeepCloneable Clone(Cloner cloner) {
+      return new AuthenticationItem(this, cloner);
+    }
+
+    public override string ToString() {
+      return Name;
+    }
+    public event EventHandler ItemImageChanged;
+    protected virtual void OnItemImageChanged() {
+      EventHandler handler = ItemImageChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    public event EventHandler ToStringChanged;
+    protected virtual void OnToStringChanged() {
+      EventHandler handler = ToStringChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+  }
+}
+
Index: branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/AuthenticationServiceClient.cs
===================================================================
--- branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/AuthenticationServiceClient.cs	(revision 4979)
+++ branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/AuthenticationServiceClient.cs	(revision 5257)
@@ -1,627 +1,469 @@
-﻿//------------------------------------------------------------------------------
+﻿#region License Information
+/* HeuristicLab 
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 
+ * 
+ * This file is part of HeuristicLab. 
+ * 
+ * HeuristicLab is free software: you can redistribute it and/or modify 
+ * it under the terms of the GNU General Public License as published by 
+ * the Free Software Foundation, either version 3 of the License, or 
+ * (at your option) any later version. 
+ * 
+ * HeuristicLab is distributed in the hope that it will be useful, 
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ * GNU General Public License for more details. 
+ * 
+ * You should have received a copy of the GNU General Public License 
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 
+ */
+#endregion
+//------------------------------------------------------------------------------
 // <auto-generated>
-//     Dieser Code wurde von einem Tool generiert.
-//     Laufzeitversion:4.0.30319.1
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
 //
-//     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
-//     der Code erneut generiert wird.
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
 // </auto-generated>
 //------------------------------------------------------------------------------
 
-namespace HeuristicLab.Services.Authentication
-{
-    using System.Runtime.Serialization;
-    
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="AuthenticationItem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Authentication.Data" +
-        "Transfer")]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.NamedAuthenticationItem))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.Role))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.Application))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.User))]
-    public partial class AuthenticationItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-    {
-        
-        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
-        
-        private System.Guid IdField;
-        
-        public System.Runtime.Serialization.ExtensionDataObject ExtensionData
-        {
-            get
-            {
-                return this.extensionDataField;
-            }
-            set
-            {
-                this.extensionDataField = value;
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid Id
-        {
-            get
-            {
-                return this.IdField;
-            }
-            set
-            {
-                if ((this.IdField.Equals(value) != true))
-                {
-                    this.IdField = value;
-                    this.RaisePropertyChanged("Id");
-                }
-            }
-        }
-        
-        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
-        
-        protected void RaisePropertyChanged(string propertyName)
-        {
-            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
-            if ((propertyChanged != null))
-            {
-                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
-            }
-        }
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="NamedAuthenticationItem", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Authentication.Data" +
-        "Transfer")]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.Role))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.Application))]
-    [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.User))]
-    public partial class NamedAuthenticationItem : HeuristicLab.Services.Authentication.AuthenticationItem
-    {
-        
-        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.Authentication.Data" +
-        "Transfer")]
-    public partial class Role : HeuristicLab.Services.Authentication.NamedAuthenticationItem
-    {
-        
-        private System.Guid ApplicationIdField;
-        
-        private string DescriptionField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid ApplicationId
-        {
-            get
-            {
-                return this.ApplicationIdField;
-            }
-            set
-            {
-                if ((this.ApplicationIdField.Equals(value) != true))
-                {
-                    this.ApplicationIdField = value;
-                    this.RaisePropertyChanged("ApplicationId");
-                }
-            }
-        }
-        
-        [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.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
-    [System.Runtime.Serialization.DataContractAttribute(Name="Application", Namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Authentication.Data" +
-        "Transfer")]
-    public partial class Application : HeuristicLab.Services.Authentication.NamedAuthenticationItem
-    {
-        
-        private string DescriptionField;
-        
-        [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.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.Authentication.Data" +
-        "Transfer")]
-    public partial class User : HeuristicLab.Services.Authentication.NamedAuthenticationItem
-    {
-        
-        private System.Guid ApplicationIdField;
-        
-        private string CommentField;
-        
-        private System.DateTime CreateDateField;
-        
-        private string EmailField;
-        
-        private bool IsApprovedField;
-        
-        private bool IsLookedOutField;
-        
-        private System.DateTime LastActivityDateField;
-        
-        private System.DateTime LastLockoutDateField;
-        
-        private System.DateTime LastLoginDateField;
-        
-        private System.DateTime LastPasswordChangeDateField;
-        
-        private string PasswordField;
-        
-        private string PasswordSaltField;
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public System.Guid ApplicationId
-        {
-            get
-            {
-                return this.ApplicationIdField;
-            }
-            set
-            {
-                if ((this.ApplicationIdField.Equals(value) != true))
-                {
-                    this.ApplicationIdField = value;
-                    this.RaisePropertyChanged("ApplicationId");
-                }
-            }
-        }
-        
-        [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 CreateDate
-        {
-            get
-            {
-                return this.CreateDateField;
-            }
-            set
-            {
-                if ((this.CreateDateField.Equals(value) != true))
-                {
-                    this.CreateDateField = value;
-                    this.RaisePropertyChanged("CreateDate");
-                }
-            }
-        }
-        
-        [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 bool IsApproved
-        {
-            get
-            {
-                return this.IsApprovedField;
-            }
-            set
-            {
-                if ((this.IsApprovedField.Equals(value) != true))
-                {
-                    this.IsApprovedField = value;
-                    this.RaisePropertyChanged("IsApproved");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public bool IsLookedOut
-        {
-            get
-            {
-                return this.IsLookedOutField;
-            }
-            set
-            {
-                if ((this.IsLookedOutField.Equals(value) != true))
-                {
-                    this.IsLookedOutField = value;
-                    this.RaisePropertyChanged("IsLookedOut");
-                }
-            }
-        }
-        
-        [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 LastLockoutDate
-        {
-            get
-            {
-                return this.LastLockoutDateField;
-            }
-            set
-            {
-                if ((this.LastLockoutDateField.Equals(value) != true))
-                {
-                    this.LastLockoutDateField = value;
-                    this.RaisePropertyChanged("LastLockoutDate");
-                }
-            }
-        }
-        
-        [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 LastPasswordChangeDate
-        {
-            get
-            {
-                return this.LastPasswordChangeDateField;
-            }
-            set
-            {
-                if ((this.LastPasswordChangeDateField.Equals(value) != true))
-                {
-                    this.LastPasswordChangeDateField = value;
-                    this.RaisePropertyChanged("LastPasswordChangeDate");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string Password
-        {
-            get
-            {
-                return this.PasswordField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.PasswordField, value) != true))
-                {
-                    this.PasswordField = value;
-                    this.RaisePropertyChanged("Password");
-                }
-            }
-        }
-        
-        [System.Runtime.Serialization.DataMemberAttribute()]
-        public string PasswordSalt
-        {
-            get
-            {
-                return this.PasswordSaltField;
-            }
-            set
-            {
-                if ((object.ReferenceEquals(this.PasswordSaltField, value) != true))
-                {
-                    this.PasswordSaltField = value;
-                    this.RaisePropertyChanged("PasswordSalt");
-                }
-            }
-        }
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="HeuristicLab.Services.Authentication.IAuthenticationService")]
-    public interface IAuthenticationService
-    {
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetUser", ReplyAction="http://tempuri.org/IAuthenticationService/GetUserResponse")]
-        HeuristicLab.Services.Authentication.User GetUser(System.Guid id);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetAllUsers", ReplyAction="http://tempuri.org/IAuthenticationService/GetAllUsersResponse")]
-        HeuristicLab.Services.Authentication.User[] GetAllUsers();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetUsers", ReplyAction="http://tempuri.org/IAuthenticationService/GetUsersResponse")]
-        HeuristicLab.Services.Authentication.User[] GetUsers(System.Guid applicationId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/AddUser", ReplyAction="http://tempuri.org/IAuthenticationService/AddUserResponse")]
-        System.Guid AddUser(HeuristicLab.Services.Authentication.User user);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/DeleteUser", ReplyAction="http://tempuri.org/IAuthenticationService/DeleteUserResponse")]
-        bool DeleteUser(System.Guid id);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/UpdateUser", ReplyAction="http://tempuri.org/IAuthenticationService/UpdateUserResponse")]
-        bool UpdateUser(HeuristicLab.Services.Authentication.User user);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/AddUserToRole", ReplyAction="http://tempuri.org/IAuthenticationService/AddUserToRoleResponse")]
-        bool AddUserToRole(System.Guid roleId, System.Guid userId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetUsersInRole", ReplyAction="http://tempuri.org/IAuthenticationService/GetUsersInRoleResponse")]
-        System.Guid[] GetUsersInRole(System.Guid roleId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/RemoveUserFromRole", ReplyAction="http://tempuri.org/IAuthenticationService/RemoveUserFromRoleResponse")]
-        bool RemoveUserFromRole(System.Guid roleId, System.Guid userId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/IsUserInRole", ReplyAction="http://tempuri.org/IAuthenticationService/IsUserInRoleResponse")]
-        bool IsUserInRole(System.Guid userId, System.Guid roleId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetRole", ReplyAction="http://tempuri.org/IAuthenticationService/GetRoleResponse")]
-        HeuristicLab.Services.Authentication.Role GetRole(System.Guid id);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetAllRoles", ReplyAction="http://tempuri.org/IAuthenticationService/GetAllRolesResponse")]
-        HeuristicLab.Services.Authentication.Role[] GetAllRoles();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetRoles", ReplyAction="http://tempuri.org/IAuthenticationService/GetRolesResponse")]
-        HeuristicLab.Services.Authentication.Role[] GetRoles(System.Guid applicationId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/AddRole", ReplyAction="http://tempuri.org/IAuthenticationService/AddRoleResponse")]
-        System.Guid AddRole(HeuristicLab.Services.Authentication.Role role);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/UpdateRole", ReplyAction="http://tempuri.org/IAuthenticationService/UpdateRoleResponse")]
-        bool UpdateRole(HeuristicLab.Services.Authentication.Role role);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/DeleteRole", ReplyAction="http://tempuri.org/IAuthenticationService/DeleteRoleResponse")]
-        bool DeleteRole(System.Guid id);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetRolesForUser", ReplyAction="http://tempuri.org/IAuthenticationService/GetRolesForUserResponse")]
-        System.Guid[] GetRolesForUser(System.Guid userId);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetApplication", ReplyAction="http://tempuri.org/IAuthenticationService/GetApplicationResponse")]
-        HeuristicLab.Services.Authentication.Application GetApplication(System.Guid id);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/AddApplication", ReplyAction="http://tempuri.org/IAuthenticationService/AddApplicationResponse")]
-        System.Guid AddApplication(HeuristicLab.Services.Authentication.Application application);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/DeleteApplication", ReplyAction="http://tempuri.org/IAuthenticationService/DeleteApplicationResponse")]
-        bool DeleteApplication(System.Guid id);
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/GetApplications", ReplyAction="http://tempuri.org/IAuthenticationService/GetApplicationsResponse")]
-        HeuristicLab.Services.Authentication.Application[] GetApplications();
-        
-        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IAuthenticationService/UpdateApplication", ReplyAction="http://tempuri.org/IAuthenticationService/UpdateApplicationResponse")]
-        bool UpdateApplication(HeuristicLab.Services.Authentication.Application application);
-    }
-    
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-    public interface IAuthenticationServiceChannel : HeuristicLab.Services.Authentication.IAuthenticationService, System.ServiceModel.IClientChannel
-    {
-    }
-    
-    [System.Diagnostics.DebuggerStepThroughAttribute()]
-    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
-    public partial class AuthenticationServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Services.Authentication.IAuthenticationService>, HeuristicLab.Services.Authentication.IAuthenticationService
-    {
-        
-        public AuthenticationServiceClient()
-        {
-        }
-        
-        public AuthenticationServiceClient(string endpointConfigurationName) : 
-                base(endpointConfigurationName)
-        {
-        }
-        
-        public AuthenticationServiceClient(string endpointConfigurationName, string remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public AuthenticationServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(endpointConfigurationName, remoteAddress)
-        {
-        }
-        
-        public AuthenticationServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
-                base(binding, remoteAddress)
-        {
-        }
-        
-        public HeuristicLab.Services.Authentication.User GetUser(System.Guid id)
-        {
-            return base.Channel.GetUser(id);
-        }
-        
-        public HeuristicLab.Services.Authentication.User[] GetAllUsers()
-        {
-            return base.Channel.GetAllUsers();
-        }
-        
-        public HeuristicLab.Services.Authentication.User[] GetUsers(System.Guid applicationId)
-        {
-            return base.Channel.GetUsers(applicationId);
-        }
-        
-        public System.Guid AddUser(HeuristicLab.Services.Authentication.User user)
-        {
-            return base.Channel.AddUser(user);
-        }
-        
-        public bool DeleteUser(System.Guid id)
-        {
-            return base.Channel.DeleteUser(id);
-        }
-        
-        public bool UpdateUser(HeuristicLab.Services.Authentication.User user)
-        {
-            return base.Channel.UpdateUser(user);
-        }
-        
-        public bool AddUserToRole(System.Guid roleId, System.Guid userId)
-        {
-            return base.Channel.AddUserToRole(roleId, userId);
-        }
-        
-        public System.Guid[] GetUsersInRole(System.Guid roleId)
-        {
-            return base.Channel.GetUsersInRole(roleId);
-        }
-        
-        public bool RemoveUserFromRole(System.Guid roleId, System.Guid userId)
-        {
-            return base.Channel.RemoveUserFromRole(roleId, userId);
-        }
-        
-        public bool IsUserInRole(System.Guid userId, System.Guid roleId)
-        {
-            return base.Channel.IsUserInRole(userId, roleId);
-        }
-        
-        public HeuristicLab.Services.Authentication.Role GetRole(System.Guid id)
-        {
-            return base.Channel.GetRole(id);
-        }
-        
-        public HeuristicLab.Services.Authentication.Role[] GetAllRoles()
-        {
-            return base.Channel.GetAllRoles();
-        }
-        
-        public HeuristicLab.Services.Authentication.Role[] GetRoles(System.Guid applicationId)
-        {
-            return base.Channel.GetRoles(applicationId);
-        }
-        
-        public System.Guid AddRole(HeuristicLab.Services.Authentication.Role role)
-        {
-            return base.Channel.AddRole(role);
-        }
-        
-        public bool UpdateRole(HeuristicLab.Services.Authentication.Role role)
-        {
-            return base.Channel.UpdateRole(role);
-        }
-        
-        public bool DeleteRole(System.Guid id)
-        {
-            return base.Channel.DeleteRole(id);
-        }
-        
-        public System.Guid[] GetRolesForUser(System.Guid userId)
-        {
-            return base.Channel.GetRolesForUser(userId);
-        }
-        
-        public HeuristicLab.Services.Authentication.Application GetApplication(System.Guid id)
-        {
-            return base.Channel.GetApplication(id);
-        }
-        
-        public System.Guid AddApplication(HeuristicLab.Services.Authentication.Application application)
-        {
-            return base.Channel.AddApplication(application);
-        }
-        
-        public bool DeleteApplication(System.Guid id)
-        {
-            return base.Channel.DeleteApplication(id);
-        }
-        
-        public HeuristicLab.Services.Authentication.Application[] GetApplications()
-        {
-            return base.Channel.GetApplications();
-        }
-        
-        public bool UpdateApplication(HeuristicLab.Services.Authentication.Application application)
-        {
-            return base.Channel.UpdateApplication(application);
-        }
-    }
+namespace HeuristicLab.Services.Authentication {
+  using System.Runtime.Serialization;
+
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "AuthenticationItem", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Authentication.Data" +
+      "Transfer")]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.Role))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.Application))]
+  [System.Runtime.Serialization.KnownTypeAttribute(typeof(HeuristicLab.Services.Authentication.User))]
+  public partial class AuthenticationItem : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+
+    private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+
+    private string DescriptionField;
+
+    private System.Guid IdField;
+
+    private string NameField;
+
+    public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+      get {
+        return this.extensionDataField;
+      }
+      set {
+        this.extensionDataField = value;
+      }
+    }
+
+    [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");
+        }
+      }
+    }
+
+    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.Authentication.Data" +
+      "Transfer")]
+  public partial class Role : HeuristicLab.Services.Authentication.AuthenticationItem {
+
+    private System.Guid ApplicationIdField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid ApplicationId {
+      get {
+        return this.ApplicationIdField;
+      }
+      set {
+        if ((this.ApplicationIdField.Equals(value) != true)) {
+          this.ApplicationIdField = value;
+          this.RaisePropertyChanged("ApplicationId");
+        }
+      }
+    }
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+  [System.Runtime.Serialization.DataContractAttribute(Name = "Application", Namespace = "http://schemas.datacontract.org/2004/07/HeuristicLab.Services.Authentication.Data" +
+      "Transfer")]
+  public partial class Application : HeuristicLab.Services.Authentication.AuthenticationItem {
+  }
+
+  [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.Authentication.Data" +
+      "Transfer")]
+  public partial class User : HeuristicLab.Services.Authentication.AuthenticationItem {
+
+    private System.Guid ApplicationIdField;
+
+    private System.DateTime CreateDateField;
+
+    private string EmailField;
+
+    private bool IsApprovedField;
+
+    private bool IsLookedOutField;
+
+    private System.DateTime LastActivityDateField;
+
+    private System.DateTime LastLockoutDateField;
+
+    private System.DateTime LastLoginDateField;
+
+    private System.DateTime LastPasswordChangeDateField;
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.Guid ApplicationId {
+      get {
+        return this.ApplicationIdField;
+      }
+      set {
+        if ((this.ApplicationIdField.Equals(value) != true)) {
+          this.ApplicationIdField = value;
+          this.RaisePropertyChanged("ApplicationId");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public System.DateTime CreateDate {
+      get {
+        return this.CreateDateField;
+      }
+      set {
+        if ((this.CreateDateField.Equals(value) != true)) {
+          this.CreateDateField = value;
+          this.RaisePropertyChanged("CreateDate");
+        }
+      }
+    }
+
+    [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 bool IsApproved {
+      get {
+        return this.IsApprovedField;
+      }
+      set {
+        if ((this.IsApprovedField.Equals(value) != true)) {
+          this.IsApprovedField = value;
+          this.RaisePropertyChanged("IsApproved");
+        }
+      }
+    }
+
+    [System.Runtime.Serialization.DataMemberAttribute()]
+    public bool IsLookedOut {
+      get {
+        return this.IsLookedOutField;
+      }
+      set {
+        if ((this.IsLookedOutField.Equals(value) != true)) {
+          this.IsLookedOutField = value;
+          this.RaisePropertyChanged("IsLookedOut");
+        }
+      }
+    }
+
+    [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 LastLockoutDate {
+      get {
+        return this.LastLockoutDateField;
+      }
+      set {
+        if ((this.LastLockoutDateField.Equals(value) != true)) {
+          this.LastLockoutDateField = value;
+          this.RaisePropertyChanged("LastLockoutDate");
+        }
+      }
+    }
+
+    [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 LastPasswordChangeDate {
+      get {
+        return this.LastPasswordChangeDateField;
+      }
+      set {
+        if ((this.LastPasswordChangeDateField.Equals(value) != true)) {
+          this.LastPasswordChangeDateField = value;
+          this.RaisePropertyChanged("LastPasswordChangeDate");
+        }
+      }
+    }
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  [System.ServiceModel.ServiceContractAttribute(ConfigurationName = "HeuristicLab.Services.Authentication.IAuthenticationService")]
+  public interface IAuthenticationService {
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetUser", ReplyAction = "http://tempuri.org/IAuthenticationService/GetUserResponse")]
+    HeuristicLab.Services.Authentication.User GetUser(System.Guid id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetUsers", ReplyAction = "http://tempuri.org/IAuthenticationService/GetUsersResponse")]
+    HeuristicLab.Services.Authentication.User[] GetUsers();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetUsersForApplication", ReplyAction = "http://tempuri.org/IAuthenticationService/GetUsersForApplicationResponse")]
+    HeuristicLab.Services.Authentication.User[] GetUsersForApplication(System.Guid applicationId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/AddUser", ReplyAction = "http://tempuri.org/IAuthenticationService/AddUserResponse")]
+    System.Guid AddUser(HeuristicLab.Services.Authentication.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/DeleteUser", ReplyAction = "http://tempuri.org/IAuthenticationService/DeleteUserResponse")]
+    void DeleteUser(System.Guid id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/UpdateUser", ReplyAction = "http://tempuri.org/IAuthenticationService/UpdateUserResponse")]
+    void UpdateUser(HeuristicLab.Services.Authentication.User user);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/AddUserToRole", ReplyAction = "http://tempuri.org/IAuthenticationService/AddUserToRoleResponse")]
+    void AddUserToRole(System.Guid roleId, System.Guid userId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetUsersInRole", ReplyAction = "http://tempuri.org/IAuthenticationService/GetUsersInRoleResponse")]
+    System.Guid[] GetUsersInRole(System.Guid roleId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/RemoveUserFromRole", ReplyAction = "http://tempuri.org/IAuthenticationService/RemoveUserFromRoleResponse")]
+    void RemoveUserFromRole(System.Guid roleId, System.Guid userId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/IsUserInRole", ReplyAction = "http://tempuri.org/IAuthenticationService/IsUserInRoleResponse")]
+    bool IsUserInRole(System.Guid userId, System.Guid roleId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/ResetPassword", ReplyAction = "http://tempuri.org/IAuthenticationService/ResetPasswordResponse")]
+    HeuristicLab.Services.Authentication.User ResetPassword(string applicationName, string userName, string password);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetRole", ReplyAction = "http://tempuri.org/IAuthenticationService/GetRoleResponse")]
+    HeuristicLab.Services.Authentication.Role GetRole(System.Guid id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetRoles", ReplyAction = "http://tempuri.org/IAuthenticationService/GetRolesResponse")]
+    HeuristicLab.Services.Authentication.Role[] GetRoles();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetRolesForApplication", ReplyAction = "http://tempuri.org/IAuthenticationService/GetRolesForApplicationResponse")]
+    HeuristicLab.Services.Authentication.Role[] GetRolesForApplication(System.Guid applicationId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/AddRole", ReplyAction = "http://tempuri.org/IAuthenticationService/AddRoleResponse")]
+    System.Guid AddRole(HeuristicLab.Services.Authentication.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/UpdateRole", ReplyAction = "http://tempuri.org/IAuthenticationService/UpdateRoleResponse")]
+    void UpdateRole(HeuristicLab.Services.Authentication.Role role);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/DeleteRole", ReplyAction = "http://tempuri.org/IAuthenticationService/DeleteRoleResponse")]
+    void DeleteRole(System.Guid id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetRolesForUser", ReplyAction = "http://tempuri.org/IAuthenticationService/GetRolesForUserResponse")]
+    System.Guid[] GetRolesForUser(System.Guid userId);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetApplication", ReplyAction = "http://tempuri.org/IAuthenticationService/GetApplicationResponse")]
+    HeuristicLab.Services.Authentication.Application GetApplication(System.Guid id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/AddApplication", ReplyAction = "http://tempuri.org/IAuthenticationService/AddApplicationResponse")]
+    System.Guid AddApplication(HeuristicLab.Services.Authentication.Application application);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/DeleteApplication", ReplyAction = "http://tempuri.org/IAuthenticationService/DeleteApplicationResponse")]
+    void DeleteApplication(System.Guid id);
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/GetApplications", ReplyAction = "http://tempuri.org/IAuthenticationService/GetApplicationsResponse")]
+    HeuristicLab.Services.Authentication.Application[] GetApplications();
+
+    [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IAuthenticationService/UpdateApplication", ReplyAction = "http://tempuri.org/IAuthenticationService/UpdateApplicationResponse")]
+    void UpdateApplication(HeuristicLab.Services.Authentication.Application application);
+  }
+
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public interface IAuthenticationServiceChannel : HeuristicLab.Services.Authentication.IAuthenticationService, System.ServiceModel.IClientChannel {
+  }
+
+  [System.Diagnostics.DebuggerStepThroughAttribute()]
+  [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+  public partial class AuthenticationServiceClient : System.ServiceModel.ClientBase<HeuristicLab.Services.Authentication.IAuthenticationService>, HeuristicLab.Services.Authentication.IAuthenticationService {
+
+    public AuthenticationServiceClient() {
+    }
+
+    public AuthenticationServiceClient(string endpointConfigurationName) :
+      base(endpointConfigurationName) {
+    }
+
+    public AuthenticationServiceClient(string endpointConfigurationName, string remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public AuthenticationServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(endpointConfigurationName, remoteAddress) {
+    }
+
+    public AuthenticationServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+      base(binding, remoteAddress) {
+    }
+
+    public HeuristicLab.Services.Authentication.User GetUser(System.Guid id) {
+      return base.Channel.GetUser(id);
+    }
+
+    public HeuristicLab.Services.Authentication.User[] GetUsers() {
+      return base.Channel.GetUsers();
+    }
+
+    public HeuristicLab.Services.Authentication.User[] GetUsersForApplication(System.Guid applicationId) {
+      return base.Channel.GetUsersForApplication(applicationId);
+    }
+
+    public System.Guid AddUser(HeuristicLab.Services.Authentication.User user) {
+      return base.Channel.AddUser(user);
+    }
+
+    public void DeleteUser(System.Guid id) {
+      base.Channel.DeleteUser(id);
+    }
+
+    public void UpdateUser(HeuristicLab.Services.Authentication.User user) {
+      base.Channel.UpdateUser(user);
+    }
+
+    public void AddUserToRole(System.Guid roleId, System.Guid userId) {
+      base.Channel.AddUserToRole(roleId, userId);
+    }
+
+    public System.Guid[] GetUsersInRole(System.Guid roleId) {
+      return base.Channel.GetUsersInRole(roleId);
+    }
+
+    public void RemoveUserFromRole(System.Guid roleId, System.Guid userId) {
+      base.Channel.RemoveUserFromRole(roleId, userId);
+    }
+
+    public bool IsUserInRole(System.Guid userId, System.Guid roleId) {
+      return base.Channel.IsUserInRole(userId, roleId);
+    }
+
+    public HeuristicLab.Services.Authentication.User ResetPassword(string applicationName, string userName, string password) {
+      return base.Channel.ResetPassword(applicationName, userName, password);
+    }
+
+    public HeuristicLab.Services.Authentication.Role GetRole(System.Guid id) {
+      return base.Channel.GetRole(id);
+    }
+
+    public HeuristicLab.Services.Authentication.Role[] GetRoles() {
+      return base.Channel.GetRoles();
+    }
+
+    public HeuristicLab.Services.Authentication.Role[] GetRolesForApplication(System.Guid applicationId) {
+      return base.Channel.GetRolesForApplication(applicationId);
+    }
+
+    public System.Guid AddRole(HeuristicLab.Services.Authentication.Role role) {
+      return base.Channel.AddRole(role);
+    }
+
+    public void UpdateRole(HeuristicLab.Services.Authentication.Role role) {
+      base.Channel.UpdateRole(role);
+    }
+
+    public void DeleteRole(System.Guid id) {
+      base.Channel.DeleteRole(id);
+    }
+
+    public System.Guid[] GetRolesForUser(System.Guid userId) {
+      return base.Channel.GetRolesForUser(userId);
+    }
+
+    public HeuristicLab.Services.Authentication.Application GetApplication(System.Guid id) {
+      return base.Channel.GetApplication(id);
+    }
+
+    public System.Guid AddApplication(HeuristicLab.Services.Authentication.Application application) {
+      return base.Channel.AddApplication(application);
+    }
+
+    public void DeleteApplication(System.Guid id) {
+      base.Channel.DeleteApplication(id);
+    }
+
+    public HeuristicLab.Services.Authentication.Application[] GetApplications() {
+      return base.Channel.GetApplications();
+    }
+
+    public void UpdateApplication(HeuristicLab.Services.Authentication.Application application) {
+      base.Channel.UpdateApplication(application);
+    }
+  }
 }
Index: branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/Role.cs
===================================================================
--- branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/Role.cs	(revision 4979)
+++ branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/Role.cs	(revision 5257)
@@ -1,14 +1,44 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab 
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 
+ * 
+ * This file is part of HeuristicLab. 
+ * 
+ * HeuristicLab is free software: you can redistribute it and/or modify 
+ * it under the terms of the GNU General Public License as published by 
+ * the Free Software Foundation, either version 3 of the License, or 
+ * (at your option) any later version. 
+ * 
+ * HeuristicLab is distributed in the hope that it will be useful, 
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ * GNU General Public License for more details. 
+ * 
+ * You should have received a copy of the GNU General Public License 
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 
+ */
+#endregion
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
 
-namespace HeuristicLab.Services.Authentication
-{
-    public partial class Role
-    {
+namespace HeuristicLab.Services.Authentication {
+  [Item("Role", "A role.")]
+  public partial class Role {
+    protected Role(Role original, Cloner cloner)
+      : base(original, cloner) {
 
-        //  IEnumerable<User> Users;
+      ApplicationId = original.ApplicationId;
+    }
 
+    public Role() {
     }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Role(this, cloner);
+    }
+  }
 }
Index: branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/User.cs
===================================================================
--- branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/User.cs	(revision 4979)
+++ branches/UserManagement/HeuristicLab.Services.Authentication.ServiceClients/ServiceClients/User.cs	(revision 5257)
@@ -1,13 +1,49 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab 
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 
+ * 
+ * This file is part of HeuristicLab. 
+ * 
+ * HeuristicLab is free software: you can redistribute it and/or modify 
+ * it under the terms of the GNU General Public License as published by 
+ * the Free Software Foundation, either version 3 of the License, or 
+ * (at your option) any later version. 
+ *                                                    d
+ * HeuristicLab is distributed in the hope that it will be useful, 
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of 
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
+ * GNU General Public License for more details. 
+ * 
+ * You should have received a copy of the GNU General Public License 
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 
+ */
+#endregion
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
 
-namespace HeuristicLab.Services.Authentication
-{
-    public partial class User
-    {
-        // IEnumerable<Role> Roles
+namespace HeuristicLab.Services.Authentication {
+  [Item("User", "An user.")]
+  public partial class User {
+    protected User(User original, Cloner cloner)
+      : base(original, cloner) {
 
+      ApplicationId = original.ApplicationId;
+      Email = original.Email;
+      IsApproved = original.IsApproved;
+      CreateDate = original.CreateDate;
+      LastLoginDate = original.LastLoginDate;
+      LastLockoutDate = original.LastLockoutDate;
     }
+
+    public User() {
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new User(this, cloner);
+    }
+  }
 }
