Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.SlaveTrayIcon/MainWindow.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.SlaveTrayIcon/MainWindow.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.SlaveTrayIcon/MainWindow.cs	(revision 5451)
@@ -49,5 +49,5 @@
       } else {
         if (Content != null) {
-          Content.HardPauseCore();
+          Content.StopAll();
         }
       }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveItem.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveItem.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveItem.cs	(revision 5451)
@@ -92,8 +92,8 @@
     }
 
-    public void SoftPauseCore() {
+    public void PauseAll() {
       try {
         if (pipeFactory.State != CommunicationState.Faulted && pipeFactory.State != CommunicationState.Closed)
-          pipeProxy.StopAll();
+          pipeProxy.PauseAll();
       }
       catch (Exception e) {
@@ -102,8 +102,8 @@
     }
 
-    public void HardPauseCore() {
+    public void StopAll() {
       try {
         if (pipeFactory.State != CommunicationState.Faulted && pipeFactory.State != CommunicationState.Closed)
-          pipeProxy.PauseAll();
+          pipeProxy.StopAll();
       }
       catch (Exception e) {
@@ -122,4 +122,14 @@
     }
 
+    public void Sleep() {
+      try {
+        if (pipeFactory.State != CommunicationState.Faulted && pipeFactory.State != CommunicationState.Closed)
+          pipeProxy.Sleep();
+      }
+      catch (Exception e) {
+        OnMessageLogged("Error sending core to sleep: " + e.ToString());
+      }
+    }
+
     public void Close() {
       if (pipeFactory.State != CommunicationState.Closed) {
@@ -130,5 +140,5 @@
 
     public event EventHandler<EventArgs<StatusCommons>> SlaveStatusChanged;
-    public void OnStatusChanged(StatusCommons status) {      
+    public void OnStatusChanged(StatusCommons status) {
       var handler = SlaveStatusChanged;
       if (handler != null) handler(this, new EventArgs<StatusCommons>(status));
@@ -136,5 +146,5 @@
 
     public event EventHandler<EventArgs<string>> SlaveMessageLogged;
-    public void OnMessageLogged(string message) {      
+    public void OnMessageLogged(string message) {
       var handler = SlaveMessageLogged;
       if (handler != null) handler(this, new EventArgs<string>(message));
@@ -142,5 +152,5 @@
 
     public event EventHandler SlaveShutdown;
-    public void OnShutdown() {      
+    public void OnShutdown() {
       var handler = SlaveShutdown;
       if (handler != null) handler(this, EventArgs.Empty);
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.Designer.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.Designer.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.Designer.cs	(revision 5451)
@@ -47,7 +47,8 @@
       this.label1 = new System.Windows.Forms.Label();
       this.txtLog = new System.Windows.Forms.TextBox();
-      this.btnSoftPause = new System.Windows.Forms.Button();
-      this.btnHardPause = new System.Windows.Forms.Button();
+      this.btnPauseAll = new System.Windows.Forms.Button();
+      this.btnStopAll = new System.Windows.Forms.Button();
       this.btnRestart = new System.Windows.Forms.Button();
+      this.btnSleep = new System.Windows.Forms.Button();
       this.SuspendLayout();
       // 
@@ -72,27 +73,27 @@
       this.txtLog.TabIndex = 1;
       // 
-      // btnSoftPause
+      // btnPauseAll
       // 
-      this.btnSoftPause.Location = new System.Drawing.Point(390, 46);
-      this.btnSoftPause.Name = "btnSoftPause";
-      this.btnSoftPause.Size = new System.Drawing.Size(111, 23);
-      this.btnSoftPause.TabIndex = 2;
-      this.btnSoftPause.Text = "Soft Pause Core";
-      this.btnSoftPause.UseVisualStyleBackColor = true;
-      this.btnSoftPause.Click += new System.EventHandler(this.btnSoftPause_Click);
+      this.btnPauseAll.Location = new System.Drawing.Point(390, 24);
+      this.btnPauseAll.Name = "btnPauseAll";
+      this.btnPauseAll.Size = new System.Drawing.Size(111, 23);
+      this.btnPauseAll.TabIndex = 2;
+      this.btnPauseAll.Text = "Pause all jobs";
+      this.btnPauseAll.UseVisualStyleBackColor = true;
+      this.btnPauseAll.Click += new System.EventHandler(this.btnSoftPause_Click);
       // 
-      // btnHardPause
+      // btnStopAll
       // 
-      this.btnHardPause.Location = new System.Drawing.Point(390, 87);
-      this.btnHardPause.Name = "btnHardPause";
-      this.btnHardPause.Size = new System.Drawing.Size(111, 23);
-      this.btnHardPause.TabIndex = 3;
-      this.btnHardPause.Text = "Hard Pause Core";
-      this.btnHardPause.UseVisualStyleBackColor = true;
-      this.btnHardPause.Click += new System.EventHandler(this.btnHardPause_Click);
+      this.btnStopAll.Location = new System.Drawing.Point(390, 53);
+      this.btnStopAll.Name = "btnStopAll";
+      this.btnStopAll.Size = new System.Drawing.Size(111, 23);
+      this.btnStopAll.TabIndex = 3;
+      this.btnStopAll.Text = "Stop all jobs";
+      this.btnStopAll.UseVisualStyleBackColor = true;
+      this.btnStopAll.Click += new System.EventHandler(this.btnHardPause_Click);
       // 
       // btnRestart
       // 
-      this.btnRestart.Location = new System.Drawing.Point(390, 127);
+      this.btnRestart.Location = new System.Drawing.Point(390, 111);
       this.btnRestart.Name = "btnRestart";
       this.btnRestart.Size = new System.Drawing.Size(111, 23);
@@ -102,11 +103,22 @@
       this.btnRestart.Click += new System.EventHandler(this.btnRestart_Click);
       // 
+      // btnSleep
+      // 
+      this.btnSleep.Location = new System.Drawing.Point(390, 82);
+      this.btnSleep.Name = "btnSleep";
+      this.btnSleep.Size = new System.Drawing.Size(111, 23);
+      this.btnSleep.TabIndex = 5;
+      this.btnSleep.Text = "Send slave to sleep";
+      this.btnSleep.UseVisualStyleBackColor = true;
+      this.btnSleep.Click += new System.EventHandler(this.btnSleep_Click);
+      // 
       // SlaveView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.btnSleep);
       this.Controls.Add(this.btnRestart);
-      this.Controls.Add(this.btnHardPause);
-      this.Controls.Add(this.btnSoftPause);
+      this.Controls.Add(this.btnStopAll);
+      this.Controls.Add(this.btnPauseAll);
       this.Controls.Add(this.txtLog);
       this.Controls.Add(this.label1);
@@ -122,7 +134,8 @@
     private System.Windows.Forms.Label label1;
     private System.Windows.Forms.TextBox txtLog;
-    private System.Windows.Forms.Button btnSoftPause;
-    private System.Windows.Forms.Button btnHardPause;
+    private System.Windows.Forms.Button btnPauseAll;
+    private System.Windows.Forms.Button btnStopAll;
     private System.Windows.Forms.Button btnRestart;
+    private System.Windows.Forms.Button btnSleep;
   }
 }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.cs	(revision 5451)
@@ -96,10 +96,10 @@
     private void btnSoftPause_Click(object sender, System.EventArgs e) {
       if (Content != null)
-        Content.SoftPauseCore();
+        Content.PauseAll();
     }
 
     private void btnHardPause_Click(object sender, System.EventArgs e) {
       if (Content != null)
-        Content.HardPauseCore();
+        Content.StopAll();
     }
 
@@ -108,4 +108,9 @@
         Content.RestartCore();
     }
+
+    private void btnSleep_Click(object sender, System.EventArgs e) {
+      if (Content != null)
+        Content.Sleep();
+    }
   }
 }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Core.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Core.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Core.cs	(revision 5451)
@@ -140,5 +140,4 @@
       } else if (container is MessageContainer) {
         switch (container.Message) {
-          //Pull a Job from the Server
           case MessageContainer.MessageType.CalculateJob:
             Job myJob = wcfService.GetJob(container.JobId);
@@ -147,5 +146,4 @@
             StartJobInAppDomain(myJob, jobData);
             break;
-
           case MessageContainer.MessageType.ShutdownSlave:
             ShutdownCore();
@@ -171,4 +169,7 @@
           case MessageContainer.MessageType.Restart:
             DoStartSlave();
+            break;
+          case MessageContainer.MessageType.Sleep:
+            Sleep();
             break;
         }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/HeartbeatManager.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/HeartbeatManager.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/HeartbeatManager.cs	(revision 5451)
@@ -22,5 +22,4 @@
 using System;
 using System.Collections.Generic;
-using System.Diagnostics;
 using System.Threading;
 using HeuristicLab.Common;
@@ -94,5 +93,6 @@
                 FreeCores = info.Cores.HasValue ? info.Cores.Value - ConfigManager.Instance.GetUsedCores() : 0,
                 FreeMemory = ConfigManager.GetFreeMemory(),
-                JobProgress = ConfigManager.Instance.GetExecutionTimeOfAllJobs()
+                JobProgress = ConfigManager.Instance.GetExecutionTimeOfAllJobs(),
+                AssignJob = true //TODO: check if we want another job
               };
 
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/PluginCache.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/PluginCache.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/PluginCache.cs	(revision 5451)
@@ -125,4 +125,5 @@
         CopyFile(baseDir, targetDir, "HeuristicLab.Services.Hive.Common-3.4.dll");
         CopyFile(baseDir, targetDir, "HeuristicLab.Hive-3.4.dll");
+        CopyFile(baseDir, targetDir, "HeuristicLab.Clients.Common-3.3.dll");
 
         //TODO: remove, just needed for unit tests
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/ServiceContracts/ISlaveCommunication.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/ServiceContracts/ISlaveCommunication.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/ServiceContracts/ISlaveCommunication.cs	(revision 5451)
@@ -38,4 +38,7 @@
 
     [OperationContract]
+    void Sleep();
+
+    [OperationContract]
     void PauseAll();
 
@@ -48,5 +51,4 @@
     [OperationContract]
     void ShutdownSlave();
-
 
     //callbacks
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/SlaveCommunicationService.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/SlaveCommunicationService.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/SlaveCommunicationService.cs	(revision 5451)
@@ -107,4 +107,9 @@
       MessageQueue.GetInstance().AddMessage(mc);
     }
+
+    public void Sleep() {
+      MessageContainer mc = new MessageContainer(MessageContainer.MessageType.Sleep);
+      MessageQueue.GetInstance().AddMessage(mc);
+    }
   }
 }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/MessageContainer.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/MessageContainer.cs	(revision 5450)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/MessageContainer.cs	(revision 5451)
@@ -42,5 +42,6 @@
       PauseJob,  // pause the job and submit the results   
       PauseAll,  // pause all jobs and submit results
-      Restart,        //restart operation after Soft/HardPause
+      Restart,   // restart operation after Sleep
+      Sleep,     // disconnect from server, but don't shutdown
       ShutdownSlave,  // slave should shutdown immediately without submitting results
       SayHello,  // Slave should say hello, because he is unknown to the server
