Index: trunk/sources/HeuristicLab.Hive.Contracts/BusinessObjects/HeartBeatData.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/BusinessObjects/HeartBeatData.cs	(revision 780)
+++ trunk/sources/HeuristicLab.Hive.Contracts/BusinessObjects/HeartBeatData.cs	(revision 780)
@@ -0,0 +1,20 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class HeartBeatData {
+    [DataMember]
+    public Guid ClientId { get; set; }
+    [DataMember]
+    public int freeMemory { get; set; }
+    [DataMember]
+    public int freeCores { get; set; }
+    [DataMember]
+    public int jobProgress { get; set; } // TODO: define Type 
+  }
+}
Index: trunk/sources/HeuristicLab.Hive.Contracts/BusinessObjects/Job.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/BusinessObjects/Job.cs	(revision 755)
+++ trunk/sources/HeuristicLab.Hive.Contracts/BusinessObjects/Job.cs	(revision 780)
@@ -31,4 +31,6 @@
   public class Job {
     [DataMember]
+    public long JobId { get; set; }
+    [DataMember]
     public State State { get; set; }
     [DataMember]
Index: trunk/sources/HeuristicLab.Hive.Contracts/HeuristicLab.Hive.Contracts.csproj
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/HeuristicLab.Hive.Contracts.csproj	(revision 755)
+++ trunk/sources/HeuristicLab.Hive.Contracts/HeuristicLab.Hive.Contracts.csproj	(revision 780)
@@ -56,4 +56,5 @@
     <Compile Include="BusinessObjects\GrantedPermissions.cs" />
     <Compile Include="BusinessObjects\ClientGroup.cs" />
+    <Compile Include="BusinessObjects\HeartBeatData.cs" />
     <Compile Include="BusinessObjects\Job.cs" />
     <Compile Include="BusinessObjects\JobResult.cs" />
@@ -66,8 +67,10 @@
     <Compile Include="BusinessObjects\User.cs" />
     <Compile Include="BusinessObjects\UserGroup.cs" />
+    <Compile Include="ResponseJob.cs" />
     <Compile Include="HiveContractPlugin.cs" />
     <Compile Include="Interfaces\IClientCommunicator.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Response.cs" />
+    <Compile Include="ResponseHB.cs" />
   </ItemGroup>
   <ItemGroup>
Index: trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IClientCommunicator.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IClientCommunicator.cs	(revision 755)
+++ trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IClientCommunicator.cs	(revision 780)
@@ -27,5 +27,5 @@
 using HeuristicLab.Hive.Contracts.BusinessObjects;
 
-namespace HeuristicLab.Hive.Server.Interfaces {
+namespace HeuristicLab.Hive.Contracts.Interfaces {
   /// <summary>
   /// This is the facade for the client communication
@@ -35,4 +35,12 @@
     [OperationContract]
     Response Login(Client clientInfo);
+    [OperationContract]
+    ResponseHB SendHeartBeat(HeartBeatData hbData);
+    [OperationContract]
+    ResponseJob PullJob(Guid clientId);
+    [OperationContract]
+    Response SendJobResult(JobResult Result, bool finished);
+    [OperationContract]
+    Response Logout(Guid clientId);
   }
 }
Index: trunk/sources/HeuristicLab.Hive.Contracts/Response.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/Response.cs	(revision 755)
+++ trunk/sources/HeuristicLab.Hive.Contracts/Response.cs	(revision 780)
@@ -24,12 +24,15 @@
 using System.Linq;
 using System.Text;
+using System.Runtime.Serialization;
 
-namespace HeuristicLab.Hive.Server {
+namespace HeuristicLab.Hive.Contracts {
   /// <summary>
   /// Server response class
   /// </summary>
+  [DataContract]
   public class Response {
+    [DataMember]
     public bool Success { get; set; }
-
+    [DataMember]
     public string StatusMessage { get; set; } 
   }
Index: trunk/sources/HeuristicLab.Hive.Contracts/ResponseHB.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/ResponseHB.cs	(revision 780)
+++ trunk/sources/HeuristicLab.Hive.Contracts/ResponseHB.cs	(revision 780)
@@ -0,0 +1,35 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts {
+
+  /// <summary>
+  /// If a client sends a heartbeat the server can request sereral actions
+  /// actions:
+  ///  - jobReady: an new Job is ready to be calculated
+  ///  - jobSnapshot: send a snapshot of the current status of the calculated job
+  ///  - abortJobwithReturn: abort the job and return all existing results
+  ///  - abortJobwithoutReturn: abort the job and don't send back anything
+  ///  - nothingToDo: there is nothing to do at the moment
+  /// </summary>
+  public enum Action { jobReady, jobSnapshot, abortJobwithReturn, abortJobwithoutReturn, nothingToDo }
+
+  /// <summary>
+  /// Response Heartbeat class
+  /// Return value to hearbeats sent by the client
+  /// </summary>
+  [DataContract]
+  public class ResponseHB : Response {
+    /// <summary>
+    /// The server can send more than one actionRequest to the client
+    /// So they are stored in one Map
+    /// key [long]: JobId
+    /// value [Action]: action
+    /// </summary>
+    [DataMember]
+    public Dictionary<long, Action> ActionRequest { get; set; }
+  }
+}
Index: trunk/sources/HeuristicLab.Hive.Contracts/ResponseJob.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/ResponseJob.cs	(revision 780)
+++ trunk/sources/HeuristicLab.Hive.Contracts/ResponseJob.cs	(revision 780)
@@ -0,0 +1,19 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Hive.Contracts.BusinessObjects;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Hive.Contracts {
+
+  /// <summary>
+  /// Response Job class
+  /// If a client pulls a Job from the server he gets a ResponseJob as answer
+  /// </summary>
+  [DataContract]
+  public class ResponseJob : Response {
+    [DataMember]
+    public Job Job { get; set; }
+  }
+}
