Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Tests/SlaveCommListener.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Tests/SlaveCommListener.cs	(revision 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Tests/SlaveCommListener.cs	(revision 6004)
@@ -50,5 +50,5 @@
       }
       catch (Exception e) {
-        OnMessageLogged("Couldn't connect to Slave core. Is it possible that the Slave Core isn't running?\nException is: " + e.ToString());
+        OnMessageLogged("Couldn't connect to Slave core. Is it possible that the Slave Core isn't running?" + Environment.NewLine + "Exception is: " + e.ToString());
         return false;
       }
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 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveItem.cs	(revision 6004)
@@ -67,5 +67,5 @@
       }
       catch (Exception ex) {
-        OnMessageLogged("Error establishing connection to Core. Are you missing a configuration file?\n" + ex.ToString());
+        OnMessageLogged("Error establishing connection to Core. Are you missing a configuration file?" + Environment.NewLine + ex.ToString());
       }
     }
@@ -78,5 +78,5 @@
       }
       catch (Exception) {
-        OnMessageLogged("Couldn't connect to Slave core. Is it possible that the Slave Core isn't running?\n");
+        OnMessageLogged("Couldn't connect to Slave core. Is it possible that the Slave Core isn't running?" + Environment.NewLine);
         return false;
       }
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 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.cs	(revision 6004)
@@ -110,10 +110,10 @@
 
     void Content_SlaveShutdown(object sender, System.EventArgs e) {
-      txtLog.AppendText("Slave did shutdown\n");
+      txtLog.AppendText("Slave did shutdown" + Environment.NewLine);
       Task.Factory.StartNew(Connector);
     }
 
     void Content_SlaveMessageLogged(object sender, EventArgs<string> e) {
-      txtLog.AppendText(e.Value + "\n");
+      txtLog.AppendText(e.Value + Environment.NewLine);
     }
     #endregion
@@ -208,8 +208,8 @@
       }
       catch (InvalidOperationException ex) {
-        MessageBox.Show("Error starting service: Hive Slave Service not found!\n" + ex.ToString());
+        MessageBox.Show("Error starting service: Hive Slave Service not found!" + Environment.NewLine + ex.ToString());
       }
       catch (Exception ex) {
-        MessageBox.Show("Error starting service, exception is: \n" + ex.ToString());
+        MessageBox.Show("Error starting service, exception is: " + Environment.NewLine + ex.ToString());
       }
     }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/ConfigManager.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/ConfigManager.cs	(revision 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/ConfigManager.cs	(revision 6004)
@@ -103,5 +103,8 @@
         foreach (KeyValuePair<Guid, Executor> kvp in engines) {
           Executor e = kvp.Value;
-          prog[e.JobId] = e.ExecutionTime;
+          //don't include jobs in hb's which are currently serializing
+          if (e.SendHeartbeatForExecutor) {
+            prog[e.JobId] = e.ExecutionTime;
+          }
         }
       }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Executor.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Executor.cs	(revision 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/Executor.cs	(revision 6004)
@@ -38,5 +38,9 @@
     private Semaphore pauseStopSem = new Semaphore(0, 1);
 
+    public bool SendHeartbeatForExecutor { get; set; }
+
     public bool Aborted { get; set; }
+
+    public DateTime CreationTime { get; set; }
 
     private Exception currentException;
@@ -63,5 +67,7 @@
     }
 
-    public DateTime CreationTime { get; set; }
+    public Executor() {
+      SendHeartbeatForExecutor = true;
+    }
 
     /// <param name="serializedJob"></param>
@@ -90,4 +96,5 @@
 
     public void Pause() {
+      SendHeartbeatForExecutor = false;
       if (Job == null) {
         SlaveClientCom.Instance.ClientCom.LogMessage("Pausing job: Job is null");
@@ -108,4 +115,5 @@
 
     public void Stop() {
+      SendHeartbeatForExecutor = false;
       if (Job == null) {
         SlaveClientCom.Instance.ClientCom.LogMessage("Stopping job: Job is null");
@@ -181,5 +189,4 @@
 
     private void Job_JobFailed(object sender, EventArgs e) {
-      //TODO: get exception to client
       HeuristicLab.Common.EventArgs<Exception> ex = (HeuristicLab.Common.EventArgs<Exception>)e;
       currentException = ex.Value;
@@ -241,7 +248,4 @@
     }
 
-    public Executor() {
-    }
-
     public void Dispose() {
       if (Job != null)
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 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/PluginCache.cs	(revision 6004)
@@ -142,10 +142,10 @@
         SlaveClientCom.Instance.ClientCom.LogMessage("Fetching plugins for job");
 
-        IEnumerable<Plugin> pluginDescriptions = WcfService.Instance.GetPlugins();
         List<Plugin> requiredPlugins = new List<Plugin>();
         foreach (Guid pluginId in myJob.PluginsNeededIds) {
-          Plugin pl = pluginDescriptions.FirstOrDefault(p => p.Id == pluginId);
-          if (pl != null)
-            requiredPlugins.Add(pl);
+          //TODO: rewrite, GetPlugin(..) should be the last thing to do after checking the local plugins
+          Plugin plugin = WcfService.Instance.GetPlugin(pluginId);
+          if (plugin != null)
+            requiredPlugins.Add(plugin);
         }
 
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/WcfService.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/WcfService.cs	(revision 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave/3.4/WcfService.cs	(revision 6004)
@@ -112,4 +112,9 @@
 
     #region Plugin Methods
+
+    public Plugin GetPlugin(Guid id) {
+      return CallHiveService(s => s.GetPlugin(id));
+    }
+
     public IEnumerable<Plugin> GetPlugins() {
       return CallHiveService(s => s.GetPlugins());
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/ExperimentManager/StateLogGanttChartListView.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/ExperimentManager/StateLogGanttChartListView.cs	(revision 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/ExperimentManager/StateLogGanttChartListView.cs	(revision 6004)
@@ -93,10 +93,10 @@
       DateTime until = to != null ? to.DateTime : upperLimit;
       TimeSpan duration = until - from.DateTime;
-      string tooltip = string.Format("State: {0}\nDuration: {1}\n{2} - {3}", from.State, duration, from.DateTime, until);
+      string tooltip = string.Format("State: {0} " + Environment.NewLine + " Duration: {1} " + Environment.NewLine + " {2} - {3}", from.State, duration, from.DateTime, until);
       if (!string.IsNullOrEmpty(from.Exception))
-        tooltip += "\n" + from.Exception;
+        tooltip += Environment.NewLine + from.Exception;
       ganttChart.AddData(name, from.State.ToString(), from.DateTime, until, tooltip, false);
     }
-    
+
     protected override void SetEnabledStateOfControls() {
       base.SetEnabledStateOfControls();
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Heartbeat.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Heartbeat.cs	(revision 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/ServiceClients/Heartbeat.cs	(revision 6004)
@@ -33,5 +33,5 @@
       String val = "SlaveId: " + SlaveId + ", FreeCores: " + FreeCores;
       foreach (KeyValuePair<Guid, TimeSpan> kvp in JobProgress) {
-        val += "\nId" + kvp.Key + " ExecutionTime " + kvp.Value;
+        val += Environment.NewLine + "Id" + kvp.Key + " ExecutionTime " + kvp.Value;
       }
       return val;
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/DataTransfer/Heartbeat.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/DataTransfer/Heartbeat.cs	(revision 6003)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/DataTransfer/Heartbeat.cs	(revision 6004)
@@ -42,5 +42,5 @@
       String val = "SlaveId: " + SlaveId + ", FreeCores: " + FreeCores;
       foreach (KeyValuePair<Guid, TimeSpan> kvp in JobProgress) {
-        val += "\nId" + kvp.Key + " ExecutionTime " + kvp.Value;
+        val += Environment.NewLine + "Id" + kvp.Key + " ExecutionTime " + kvp.Value;
       }
       return val;
