Index: /trunk/sources/HeuristicLab.Hive.Contracts/BusinessObjects/Client.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/BusinessObjects/Client.cs	(revision 1508)
+++ /trunk/sources/HeuristicLab.Hive.Contracts/BusinessObjects/Client.cs	(revision 1509)
@@ -28,5 +28,5 @@
 namespace HeuristicLab.Hive.Contracts.BusinessObjects {
 
-  public enum State { nullState, idle, calculating, offline, finished };
+  public enum State { nullState, idle, calculating, offline, finished, abort, requestSnapshot };
 
   [DataContract]
Index: /trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IExecutionEngineFacade.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IExecutionEngineFacade.cs	(revision 1508)
+++ /trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IExecutionEngineFacade.cs	(revision 1509)
@@ -32,4 +32,10 @@
     [OperationContract]
     ResponseObject<Job> AddJob(Job job);
+    [OperationContract]
+    Response RequestSnapshot(Guid jobId);
+    [OperationContract]
+    ResponseObject<JobResult> GetLastResult(Guid jobId, bool requested);
+    [OperationContract]
+    Response AbortJob(Guid jobId);
   }
 }
Index: /trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IJobManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IJobManager.cs	(revision 1508)
+++ /trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IJobManager.cs	(revision 1509)
@@ -40,5 +40,9 @@
     Response RemoveJob(Guid jobId);
     [OperationContract]
-    ResponseObject<JobResult> GetLastJobResultOf(Guid jobId);
+    ResponseObject<JobResult> GetLastJobResultOf(Guid jobId, bool requested);
+    [OperationContract]
+    Response RequestSnapshot(Guid jobId);
+    [OperationContract]
+    Response AbortJob(Guid jobId);
   }
 }
Index: /trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.cs	(revision 1508)
+++ /trunk/sources/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.cs	(revision 1509)
@@ -253,5 +253,5 @@
           IJobManager jobManager =
             ServiceLocator.GetJobManager();
-          ResponseObject<JobResult> jobRes = jobManager.GetLastJobResultOf(currentJob.Id);
+          ResponseObject<JobResult> jobRes = jobManager.GetLastJobResultOf(currentJob.Id, false);
           lblJobCalculationEnd.Text = "Calculation ended at " + jobRes.Obj.DateFinished;
         }
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/ExecutionEngineFacade.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/ExecutionEngineFacade.cs	(revision 1508)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/ExecutionEngineFacade.cs	(revision 1509)
@@ -40,4 +40,16 @@
     }
 
+    public Response RequestSnapshot(Guid jobId) {
+      return jobManager.RequestSnapshot(jobId);
+    }
+
+    public ResponseObject<JobResult> GetLastResult(Guid jobId, bool requested) {
+      return jobManager.GetLastJobResultOf(jobId, requested);
+    }
+
+    public Response AbortJob(Guid jobId) {
+      return jobManager.AbortJob(jobId);
+    }
+
     #endregion
   }
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/JobManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/JobManager.cs	(revision 1508)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/JobManager.cs	(revision 1509)
@@ -229,5 +229,5 @@
     }
 
-    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId) {
+    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId, bool requested) {
       ISession session = factory.GetSessionForCurrentThread();
 
@@ -249,4 +249,23 @@
     }
 
+    public Response RequestSnapshot(Guid jobId) {
+      ISession session = factory.GetSessionForCurrentThread();
+      Response response = new Response();
+      
+      try {
+        
+
+        return response;
+      }
+      finally {
+        if (session != null)
+          session.EndSession();
+      }
+    }
+
+    public Response AbortJob(Guid jobId) {
+      throw new NotImplementedException();
+    }
+
     #endregion
   }
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/ServerConsoleFacade.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/ServerConsoleFacade.cs	(revision 1508)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/ServerConsoleFacade.cs	(revision 1509)
@@ -91,6 +91,6 @@
     }
 
-    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId) {
-      return jobManager.GetLastJobResultOf(jobId);
+    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId, bool requested) {
+      return jobManager.GetLastJobResultOf(jobId, requested);
     }
 
@@ -99,4 +99,12 @@
     }
 
+    public Response RequestSnapshot(Guid jobId) {
+      return jobManager.RequestSnapshot(jobId);
+    }
+
+    public Response AbortJob(Guid jobId) {
+      return jobManager.AbortJob(jobId);
+    }
+
     #endregion
   }
