Index: /trunk/sources/HeuristicLab.Security.Contracts/HeuristicLab.Security.Contracts.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Security.Contracts/HeuristicLab.Security.Contracts.csproj	(revision 1519)
+++ /trunk/sources/HeuristicLab.Security.Contracts/HeuristicLab.Security.Contracts.csproj	(revision 1520)
@@ -91,4 +91,7 @@
       <RequiredTargetFramework>3.0</RequiredTargetFramework>
     </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
     <Reference Include="System.Xml" />
   </ItemGroup>
Index: /trunk/sources/HeuristicLab.Security.Contracts/Interfaces/IPermissionManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Contracts/Interfaces/IPermissionManager.cs	(revision 1519)
+++ /trunk/sources/HeuristicLab.Security.Contracts/Interfaces/IPermissionManager.cs	(revision 1520)
@@ -2,10 +2,19 @@
 using System.Collections.Generic;
 using System.Text;
+using System.ServiceModel;
 
 namespace HeuristicLab.Security.Contracts.Interfaces {
-  interface IPermissionManager {
+
+  [ServiceContract]
+  public interface IPermissionManager {
+
+    [OperationContract]
     Guid Authenticate(String userName, String password);
+
+    [OperationContract]
     bool CheckPermission(Guid sessionId, Guid permissionId,
       Guid enitityId);
+
+    [OperationContract]
     void EndSession(Guid sessionId);
   }
Index: /trunk/sources/HeuristicLab.Security.Contracts/Interfaces/ISecurityManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Contracts/Interfaces/ISecurityManager.cs	(revision 1519)
+++ /trunk/sources/HeuristicLab.Security.Contracts/Interfaces/ISecurityManager.cs	(revision 1520)
@@ -2,21 +2,41 @@
 using System.Collections.Generic;
 using System.Text;
+using System.ServiceModel;
 using HeuristicLab.Security.Contracts.BusinessObjects;
 
 namespace HeuristicLab.Security.Contracts.Interfaces {
-  interface ISecurityManager {
+
+  [ServiceContract]
+  public interface ISecurityManager {
+
+    [OperationContract]
     User AddNewUser(User user);
+
+    [OperationContract]
     bool RemoveUser(Guid userId);
+
+    [OperationContract]
     User UpdateUser(User user);
 
+    [OperationContract]
     UserGroup AddNewUserGroup(UserGroup group);
-    bool RemoveUserGroup(Guid groupId);
+
+    [OperationContract]
+    bool RemoveUserGroup(UserGroup group);
+
+    [OperationContract]
     UserGroup UpdateUserGroup(UserGroup group);
 
-    bool AddPermissionOwnerToGroup(Guid groupId, Guid permissionOwnerId);
-    bool RemovePermissionOwnerFromGroup(Guid groupId, Guid permissionOwnerId);
+    [OperationContract]
+    bool AddPermissionOwnerToGroup(UserGroup userGroup, PermissionOwner permissionOwner);
 
-    bool GrantPermission(Guid permissionOwnerId, Guid permissionId);
-    bool RevokePermission(Guid permissionOwnerId, Guid permissionId);
+    [OperationContract]
+    bool RemovePermissionOwnerFromGroup(UserGroup userGroup, PermissionOwner permissionOwner);
+
+    [OperationContract]
+    bool GrantPermission(PermissionOwner permissionOwner, Permission permission);
+
+    [OperationContract]
+    bool RevokePermission(PermissionOwner permissionOwner, Permission permission);
   }
 }
Index: /trunk/sources/HeuristicLab.Security.DataAccess/IPermissionAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.DataAccess/IPermissionAdapter.cs	(revision 1519)
+++ /trunk/sources/HeuristicLab.Security.DataAccess/IPermissionAdapter.cs	(revision 1520)
@@ -30,5 +30,5 @@
   /// The permission database adapter
   /// </summary>
-  interface IPermissionAdapter: IDataAdapter<Permission> {
+  public interface IPermissionAdapter: IDataAdapter<Permission> {
     /// <summary>
     /// Determines, if the permission Owner has the permission on the entity
@@ -38,6 +38,5 @@
     /// <param name="entityId"></param>
     /// <returns></returns>
-    GrantedPermission getPermssion(Guid permissionOwnerId, Guid permissionId,
-      Guid entityId);
+    GrantedPermission getPermission(PermissionOwner permissionOwner, Permission permission);
 
     /// <summary>
@@ -48,6 +47,5 @@
     /// <param name="entityId"></param>
     /// <returns></returns>
-    bool addPermission(Guid permissionOwnerId, Guid permissionId,
-      Guid entityId);
+    bool addPermission(PermissionOwner permissionOwner, Permission permission);
 
     /// <summary>
@@ -58,6 +56,5 @@
     /// <param name="entityId"></param>
     /// <returns></returns>
-    bool removePermission(Guid permissionOwnerId, Guid permissionId,
-      Guid entityId);
+    bool removePermission(PermissionOwner permissionOwner, Permission permission);
   }
 }
Index: /trunk/sources/HeuristicLab.sln
===================================================================
--- /trunk/sources/HeuristicLab.sln	(revision 1519)
+++ /trunk/sources/HeuristicLab.sln	(revision 1520)
@@ -158,4 +158,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.StatisticalAnalysis", "HeuristicLab.StatisticalAnalysis\HeuristicLab.StatisticalAnalysis.csproj", "{1DAA4952-8D6B-4D43-A9E5-5466053DA777}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Security.Core", "HeuristicLab.Security.Core\HeuristicLab.Security.Core.csproj", "{F734E19F-11B3-41EA-B302-52CA7644F8ED}"
 EndProject
 Global
@@ -2167,4 +2169,24 @@
 		{1DAA4952-8D6B-4D43-A9E5-5466053DA777}.Visualization Debug|x64.ActiveCfg = Debug|Any CPU
 		{1DAA4952-8D6B-4D43-A9E5-5466053DA777}.Visualization Debug|x86.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.CEDMA Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.CEDMA Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.CEDMA Debug|x64.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.CEDMA Debug|x86.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.GP Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.GP Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.GP Debug|x64.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.GP Debug|x86.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Release|x64.ActiveCfg = Release|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Release|x86.ActiveCfg = Release|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Visualization Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Visualization Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Visualization Debug|x64.ActiveCfg = Debug|Any CPU
+		{F734E19F-11B3-41EA-B302-52CA7644F8ED}.Visualization Debug|x86.ActiveCfg = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
