Index: trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs	(revision 7170)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs	(revision 7171)
@@ -47,5 +47,4 @@
     private Semaphore waitShutdownSem = new Semaphore(0, 1);
     private bool abortRequested;
-    private ISlaveCommunication clientCom;
     private ServiceHost slaveComm;
     private WcfService wcfService;
@@ -77,9 +76,8 @@
         slaveComm = new ServiceHost(typeof(SlaveCommunicationService));
         slaveComm.Open();
-        clientCom = SlaveClientCom.Instance.ClientCom;
-
+        
         // delete all left over task directories
         pluginManager.CleanPluginTemp();
-        clientCom.LogMessage("Hive Slave started");
+        SlaveClientCom.Instance.LogMessage("Hive Slave started");
 
         wcfService = WcfService.Instance;
@@ -93,7 +91,7 @@
           EventLogManager.LogException(ex);
         } else {
-          //try to log with clientCom. if this works the user sees at least a message, 
+          //try to log with SlaveClientCom.Instance. if this works the user sees at least a message, 
           //else an exception will be thrown anyways.
-          clientCom.LogMessage(string.Format("Uncaught exception: {0} {1} Core is going to shutdown.", ex.ToString(), Environment.NewLine));
+          SlaveClientCom.Instance.LogMessage(string.Format("Uncaught exception: {0} {1} Core is going to shutdown.", ex.ToString(), Environment.NewLine));
         }
         ShutdownCore();
@@ -118,5 +116,5 @@
         DetermineAction(container);
         if (!abortRequested) {
-          clientCom.StatusChanged(configManager.GetStatusForClientConsole());
+          SlaveClientCom.Instance.StatusChanged(configManager.GetStatusForClientConsole());
         }
       }
@@ -134,9 +132,9 @@
 
     private void WcfService_ExceptionOccured(object sender, EventArgs<Exception> e) {
-      clientCom.LogMessage(string.Format("Connection to server interruped with exception: {0}", e.Value.Message));
+      SlaveClientCom.Instance.LogMessage(string.Format("Connection to server interruped with exception: {0}", e.Value.Message));
     }
 
     private void WcfService_Connected(object sender, EventArgs e) {
-      clientCom.LogMessage("Connected successfully to Hive server");
+      SlaveClientCom.Instance.LogMessage("Connected successfully to Hive server");
     }
 
@@ -146,5 +144,5 @@
     /// <param name="container">The container, containing the message</param>
     private void DetermineAction(MessageContainer container) {
-      clientCom.LogMessage(string.Format("Message: {0} for task: {1} ", container.Message.ToString(), container.TaskId));
+      SlaveClientCom.Instance.LogMessage(string.Format("Message: {0} for task: {1} ", container.Message.ToString(), container.TaskId));
 
       switch (container.Message) {
@@ -195,5 +193,5 @@
       .ContinueWith((t) => {
         SlaveStatusInfo.IncrementExceptionOccured();
-        clientCom.LogMessage(t.Exception.ToString());
+        SlaveClientCom.Instance.LogMessage(t.Exception.ToString());
       }, TaskContinuationOptions.OnlyOnFaulted);
     }
@@ -203,5 +201,5 @@
        .ContinueWith((t) => {
          SlaveStatusInfo.IncrementExceptionOccured();
-         clientCom.LogMessage(t.Exception.ToString());
+         SlaveClientCom.Instance.LogMessage(t.Exception.ToString());
        }, TaskContinuationOptions.OnlyOnFaulted);
     }
@@ -211,5 +209,5 @@
        .ContinueWith((t) => {
          SlaveStatusInfo.IncrementExceptionOccured();
-         clientCom.LogMessage(t.Exception.ToString());
+         SlaveClientCom.Instance.LogMessage(t.Exception.ToString());
        }, TaskContinuationOptions.OnlyOnFaulted);
     }
@@ -219,5 +217,5 @@
        .ContinueWith((t) => {
          SlaveStatusInfo.IncrementExceptionOccured();
-         clientCom.LogMessage(t.Exception.ToString());
+         SlaveClientCom.Instance.LogMessage(t.Exception.ToString());
        }, TaskContinuationOptions.OnlyOnFaulted);
     }
@@ -337,8 +335,8 @@
       }
       catch (TaskNotFoundException ex) {
-        clientCom.LogMessage(ex.ToString());
+        SlaveClientCom.Instance.LogMessage(ex.ToString());
       }
       catch (Exception ex) {
-        clientCom.LogMessage(ex.ToString());
+        SlaveClientCom.Instance.LogMessage(ex.ToString());
       }
     }
@@ -355,8 +353,8 @@
       }
       catch (TaskNotFoundException ex) {
-        clientCom.LogMessage(ex.ToString());
+        SlaveClientCom.Instance.LogMessage(ex.ToString());
       }
       catch (Exception ex) {
-        clientCom.LogMessage(ex.ToString());
+        SlaveClientCom.Instance.LogMessage(ex.ToString());
       }
     }
@@ -378,13 +376,13 @@
           wcfService.UpdateJobState(task.Id, TaskState.Failed, exception.ToString());
         }
-        clientCom.LogMessage(exception.Message);
+        SlaveClientCom.Instance.LogMessage(exception.Message);
       }
       catch (TaskNotFoundException ex) {
         SlaveStatusInfo.IncrementExceptionOccured();
-        clientCom.LogMessage(ex.ToString());
+        SlaveClientCom.Instance.LogMessage(ex.ToString());
       }
       catch (Exception ex) {
         SlaveStatusInfo.IncrementExceptionOccured();
-        clientCom.LogMessage(ex.ToString());
+        SlaveClientCom.Instance.LogMessage(ex.ToString());
       }
     }
@@ -394,5 +392,5 @@
       SlaveStatusInfo.IncrementExceptionOccured();
       heartbeatManager.AwakeHeartBeatThread();
-      clientCom.LogMessage(string.Format("Exception occured for task {0}: {1}", e.Value.TaskId, e.Value2.ToString()));
+      SlaveClientCom.Instance.LogMessage(string.Format("Exception occured for task {0}: {1}", e.Value.TaskId, e.Value2.ToString()));
       wcfService.UpdateJobState(e.Value.TaskId, TaskState.Waiting, e.Value2.ToString());
     }
@@ -406,5 +404,5 @@
     private void log_MessageAdded(object sender, EventArgs<string> e) {
       try {
-        clientCom.LogMessage(e.Value.Split('\t')[1]);
+        SlaveClientCom.Instance.LogMessage(e.Value.Split('\t')[1]);
       }
       catch { }
@@ -416,5 +414,5 @@
     /// </summary>
     private void DoAbortAll() {
-      clientCom.LogMessage("Aborting all jobs.");
+      SlaveClientCom.Instance.LogMessage("Aborting all jobs.");
       foreach (Guid taskId in taskManager.TaskIds) {
         AbortTaskAsync(taskId);
@@ -426,5 +424,5 @@
     /// </summary>
     private void DoPauseAll() {
-      clientCom.LogMessage("Pausing all jobs.");
+      SlaveClientCom.Instance.LogMessage("Pausing all jobs.");
       foreach (Guid taskId in taskManager.TaskIds) {
         PauseTaskAsync(taskId);
@@ -436,5 +434,5 @@
     /// </summary>
     private void DoStopAll() {
-      clientCom.LogMessage("Stopping all jobs.");
+      SlaveClientCom.Instance.LogMessage("Stopping all jobs.");
       foreach (Guid taskId in taskManager.TaskIds) {
         StopTaskAsync(taskId);
@@ -456,6 +454,6 @@
     /// </summary>
     private void ShutdownCore() {
-      clientCom.LogMessage("Shutdown signal received");
-      clientCom.LogMessage("Stopping heartbeat");
+      SlaveClientCom.Instance.LogMessage("Shutdown signal received");
+      SlaveClientCom.Instance.LogMessage("Stopping heartbeat");
       heartbeatManager.StopHeartBeat();
       abortRequested = true;
@@ -463,7 +461,7 @@
       DoAbortAll();
 
-      clientCom.LogMessage("Logging out");
+      SlaveClientCom.Instance.LogMessage("Logging out");
       WcfService.Instance.Disconnect();
-      clientCom.Shutdown();
+      SlaveClientCom.Instance.ClientCom.Shutdown();
       SlaveClientCom.Close();
 
@@ -477,5 +475,5 @@
     /// </summary>  
     private void DoStartSlave() {
-      clientCom.LogMessage("Restart received");
+      SlaveClientCom.Instance.LogMessage("Restart received");
       configManager.Asleep = false;
     }
@@ -486,5 +484,5 @@
     /// </summary>    
     private void Sleep() {
-      clientCom.LogMessage("Sleep received - not accepting any new jobs");
+      SlaveClientCom.Instance.LogMessage("Sleep received - not accepting any new jobs");
       configManager.Asleep = true;
       DoPauseAll();
Index: trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Manager/ConfigManager.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Manager/ConfigManager.cs	(revision 7170)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Manager/ConfigManager.cs	(revision 7171)
@@ -125,5 +125,5 @@
       }
       catch (Exception ex) {
-        SlaveClientCom.Instance.ClientCom.LogMessage(string.Format("Exception was thrown while trying to get execution times: {0}", ex.Message));
+        SlaveClientCom.Instance.LogMessage(string.Format("Exception was thrown while trying to get execution times: {0}", ex.Message));
       }
       return prog;
Index: trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Manager/HeartbeatManager.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Manager/HeartbeatManager.cs	(revision 7170)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/Manager/HeartbeatManager.cs	(revision 7171)
@@ -83,5 +83,5 @@
       while (!threadStopped) {
         try {
-          SlaveClientCom.Instance.ClientCom.StatusChanged(ConfigManager.Instance.GetStatusForClientConsole());
+          SlaveClientCom.Instance.StatusChanged(ConfigManager.Instance.GetStatusForClientConsole());
         }
         catch (Exception ex) {
@@ -109,13 +109,13 @@
               };
 
-              SlaveClientCom.Instance.ClientCom.LogMessage("Send HB: " + heartBeatData);
+              SlaveClientCom.Instance.LogMessage("Send HB: " + heartBeatData);
               List<MessageContainer> msgs = wcfService.SendHeartbeat(heartBeatData);
 
               if (msgs == null) {
-                SlaveClientCom.Instance.ClientCom.LogMessage("Error getting response from HB");
+                SlaveClientCom.Instance.LogMessage("Error getting response from HB");
                 OnExceptionOccured(new Exception("Error getting response from HB"));
               } else {
-                SlaveClientCom.Instance.ClientCom.LogMessage("HB Response received (" + msgs.Count + "): ");
-                msgs.ForEach(mc => SlaveClientCom.Instance.ClientCom.LogMessage(mc.Message.ToString()));
+                SlaveClientCom.Instance.LogMessage("HB Response received (" + msgs.Count + "): ");
+                msgs.ForEach(mc => SlaveClientCom.Instance.LogMessage(mc.Message.ToString()));
                 msgs.ForEach(mc => MessageQueue.GetInstance().AddMessage(mc));
               }
@@ -124,5 +124,5 @@
         }
         catch (Exception e) {
-          SlaveClientCom.Instance.ClientCom.LogMessage("Heartbeat thread failed: " + e.ToString());
+          SlaveClientCom.Instance.LogMessage("Heartbeat thread failed: " + e.ToString());
           OnExceptionOccured(e);
         }
@@ -130,5 +130,5 @@
       }
       waitHandle.Close();
-      SlaveClientCom.Instance.ClientCom.LogMessage("Heartbeat thread stopped");
+      SlaveClientCom.Instance.LogMessage("Heartbeat thread stopped");
     }
 
Index: trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/SlaveClientCom.cs
===================================================================
--- trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/SlaveClientCom.cs	(revision 7170)
+++ trunk/sources/HeuristicLab.Clients.Hive.Slave/3.3/SlaveClientCom.cs	(revision 7171)
@@ -23,4 +23,5 @@
 using HeuristicLab.Clients.Hive.SlaveCore.Properties;
 using HeuristicLab.Clients.Hive.SlaveCore.ServiceContracts;
+using System;
 
 namespace HeuristicLab.Clients.Hive.SlaveCore {
@@ -44,4 +45,22 @@
         }
         return instance;
+      }
+    }
+
+    public void LogMessage(string message) {
+      try {
+        ClientCom.LogMessage(message);
+      }
+      catch (Exception ex) {
+        EventLogManager.LogMessage("Exception on LogMessage: " + ex.ToString() + Environment.NewLine + "Orginal message was: " + message);
+      }
+    }
+
+    public void StatusChanged(StatusCommons status) {
+      try {
+        ClientCom.StatusChanged(status);
+      }
+      catch (Exception ex) {
+        EventLogManager.LogMessage("Exception on StatusChanged: " + ex.ToString());
       }
     }
