Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive 3.3.sln	(revision 5093)
@@ -75,5 +75,5 @@
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Hive.Slave.ExecutionEngine-3.3", "HeuristicLab.Hive.Slave.ExecutionEngine\3.3\HeuristicLab.Hive.Slave.ExecutionEngine-3.3.csproj", "{1605256A-1CB3-44AB-AAFF-577093EE5789}"
 EndProject
-Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "HiveWeb", "HiveWeb\Hive-3.3\", "{590AD383-846B-48FF-8D06-B0AA1B328102}"
+Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Hive-3.3", "HiveWeb\Hive-3.3\", "{590AD383-846B-48FF-8D06-B0AA1B328102}"
 	ProjectSection(WebsiteProperties) = preProject
 		TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
@@ -93,5 +93,5 @@
 		Release.AspNetCompiler.FixedNames = "false"
 		Release.AspNetCompiler.Debug = "False"
-		VWDPort = "3220"
+		VWDPort = "39028"
 	EndProjectSection
 EndProject
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ApplicationConstants.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ApplicationConstants.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/ApplicationConstants.cs	(revision 5093)
@@ -31,9 +31,9 @@
     /// ReadUncommitted to minimize deadlocks. 
     /// </summary>
-    public static System.Transactions.IsolationLevel ISOLATION_LEVEL_SCOPE = System.Transactions.IsolationLevel.ReadUncommitted;
+    public static System.Transactions.IsolationLevel ISOLATION_LEVEL_SCOPE = System.Transactions.IsolationLevel.ReadCommitted;
 
     public static int HEARTBEAT_MAX_DIF = 120; // value in seconds
     
-    public static int JOB_TIME_TO_LIVE = 5;
+    public static int JOB_TIME_TO_LIVE = 20;
 
     /// <summary>
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/ILifecycleManager.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/ILifecycleManager.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Contracts/3.3/Interfaces/ILifecycleManager.cs	(revision 5093)
@@ -50,5 +50,11 @@
     event EventHandler Stopped;
 
-    IEnumerable<PluginDescription> Plugins { get;}
+    IEnumerable<PluginDescription> Plugins { get; }
+
+    Dictionary<Guid, DateTime> LastHeartbeats { get; }
+
+    Dictionary<Guid, int> NewAssignedJobs { get; }
+
+    Dictionary<Guid, int> PendingJobs { get; }
 
     byte[] ConfigurationFile { get; }
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.ExperimentManager/3.3/HeuristicLab.Hive.ExperimentManager-3.3.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.ExperimentManager/3.3/HeuristicLab.Hive.ExperimentManager-3.3.csproj	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.ExperimentManager/3.3/HeuristicLab.Hive.ExperimentManager-3.3.csproj	(revision 5093)
@@ -121,4 +121,7 @@
       <SubType>Designer</SubType>
     </None>
+    <None Include="f005pc.hagenberg.fhooe.at - app.config">
+      <SubType>Designer</SubType>
+    </None>
     <None Include="HeuristicLabHiveExperimentManagerPlugin.cs.frame" />
     <Compile Include="Exceptions\AddJobToHiveException.cs" />
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.ExperimentManager/3.3/app.config
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.ExperimentManager/3.3/app.config	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.ExperimentManager/3.3/app.config	(revision 5093)
@@ -29,16 +29,16 @@
     </bindings>
     <client>
-      <endpoint address="net.tcp://localhost:9001/Hive/ClientService.svc" binding="netTcpBinding" bindingConfiguration="ClientTcpStreamedEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IClientFacade" name="ClientTcpStreamedEndpoint">
+      <endpoint address="net.tcp://services.heuristiclab.com:8000/Hive-3.3/ClientService.svc" binding="netTcpBinding" bindingConfiguration="ClientTcpStreamedEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IClientFacade" name="ClientTcpStreamedEndpoint">
         <identity>
-          <dns value="localhost"/>
+          <dns value="services.heuristiclab.com"/>
         </identity>
       </endpoint>
-      <endpoint address="http://localhost:9000/Hive/ClientService.svc" binding="wsHttpBinding" bindingConfiguration="ClientHttpEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IClientFacade" name="ClientHttpEndpoint">
+      <endpoint address="http://services.heuristiclab.com/Hive-3.3/ClientService.svc" binding="wsHttpBinding" bindingConfiguration="ClientHttpEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IClientFacade" name="ClientHttpEndpoint">
         <identity>
-          <certificate encodedValue="AwAAAAEAAAAUAAAAfEKvcVixnJay+q4hCPFuO0JL5TQgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMTAxOTEwNTMxNVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXwC5TGcAffd/0oAWHtm0s6YXVXEgXgb1AYmBkkkhkKIFJG/e/Z0KSYbJepmSJD44W3oOAVm+x1DAsZxU79HahDYgWCuHLMm1TLpwSmYOQ0kV3pGHWHhiWV7h7oGLds/eqZ2EOpaNGryfEPnrA4VmxY91vV5/2BTeVSWG6F8lRKQIDAQABo0kwRzBFBgNVHQEEPjA8gBAR7kBnMRHO5gzThEqda0wWoRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQADgYEAoPwEG4QTDXhlxERNDfsZmM2IhEpV42ppz1kEah2oYKDa/ElIMVtvqLv6flVtg18ENN/mEJWiHZ3NyP3qr2Pip+sh+/2WBiSbOaukES/CM7OJn9kJCImH7M/xqM8pxqY8IfgM6iBVrVj9uHqj3j2BBck+cYY8fKyh3CFifMIp6ac="/>
+          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
         </identity>
       </endpoint>
     </client>
-
+    
   </system.serviceModel>
 <startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/HeuristicLab.Hive.Server.Console-3.3.csproj	(revision 5093)
@@ -140,4 +140,5 @@
     <Compile Include="Changes.cs" />
     <None Include="app.config" />
+    <None Include="f005pc.hagenberg.fhooe.at - app.config" />
     <None Include="HeuristicLabHiveClientConsolePlugin.cs.frame" />
     <Compile Include="HiveServerConsole.cs">
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/app.config
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/app.config	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Console/3.3/app.config	(revision 5093)
@@ -26,7 +26,7 @@
     </bindings>
     <client>
-      <endpoint address="http://localhost:9000/Hive/ServerConsoleService.svc" behaviorConfiguration="ServerConsoleBehaviour" binding="wsHttpBinding" bindingConfiguration="ServerConsoleHttpEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IServerConsoleFacade" name="ServerConsoleHttpEndpoint">
+      <endpoint address="http://services.heuristiclab.com/Hive-3.3/ServerConsoleService.svc" behaviorConfiguration="ServerConsoleBehaviour" binding="wsHttpBinding" bindingConfiguration="ServerConsoleHttpEndpoint" contract="HeuristicLab.Hive.Contracts.Interfaces.IServerConsoleFacade" name="ServerConsoleHttpEndpoint">
         <identity>
-          <certificate encodedValue="AwAAAAEAAAAUAAAAfEKvcVixnJay+q4hCPFuO0JL5TQgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMTAxOTEwNTMxNVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXwC5TGcAffd/0oAWHtm0s6YXVXEgXgb1AYmBkkkhkKIFJG/e/Z0KSYbJepmSJD44W3oOAVm+x1DAsZxU79HahDYgWCuHLMm1TLpwSmYOQ0kV3pGHWHhiWV7h7oGLds/eqZ2EOpaNGryfEPnrA4VmxY91vV5/2BTeVSWG6F8lRKQIDAQABo0kwRzBFBgNVHQEEPjA8gBAR7kBnMRHO5gzThEqda0wWoRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQADgYEAoPwEG4QTDXhlxERNDfsZmM2IhEpV42ppz1kEah2oYKDa/ElIMVtvqLv6flVtg18ENN/mEJWiHZ3NyP3qr2Pip+sh+/2WBiSbOaukES/CM7OJn9kJCImH7M/xqM8pxqY8IfgM6iBVrVj9uHqj3j2BBck+cYY8fKyh3CFifMIp6ac="/>
+          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
         </identity>
       </endpoint>
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/CreateHiveDatabaseApplication.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/CreateHiveDatabaseApplication.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/CreateHiveDatabaseApplication.cs	(revision 5093)
@@ -25,5 +25,5 @@
 
 namespace HeuristicLab.Hive.Server.Core {
-  [Application("Create Hive Database", "Creates new empty Hive Database.", true)]
+  [Application("Create Hive-3.3 Database", "Creates new empty Hive Database.", true)]
   class CreateHiveDatabaseApplication : ApplicationBase {
 
@@ -38,3 +38,17 @@
     }
   }
+
+  [Application("Test something")]
+  class TestApplication : ApplicationBase {
+
+    public override void Run() {
+      IContextFactory contextFactory = ServiceLocator.GetContextFactory();
+      using (contextFactory.GetContext(false)) {
+        var job = DaoLocator.JobDao.FindWithLimitations(Contracts.BusinessObjects.JobState.Offline, 0, 1);
+
+        var jobs = DaoLocator.JobDao.FindAll();
+
+      }
+    }
+  }
 }
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/DefaultScheduler.cs	(revision 5093)
@@ -47,5 +47,5 @@
         /// Critical section ///
         JobDto jobToCalculate = null;
-        using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = ApplicationConstants.ISOLATION_LEVEL_SCOPE })) {
+        using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) {
           SlaveDto slave = DaoLocator.SlaveDao.FindById(slaveId);
 
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/JobManager.cs	(revision 5093)
@@ -50,5 +50,5 @@
       Logger.Info("Searching for dead Jobs");
 
-      List<JobDto> allJobs = new List<JobDto>(DaoLocator.JobDao.FindAll());
+      IEnumerable<JobDto> allJobs = DaoLocator.JobDao.FindAll();
       foreach (JobDto curJob in allJobs) {
         if (curJob.State != JobState.Calculating &&
@@ -69,7 +69,7 @@
 
     private void lifecycleManager_Stopped(object sender, EventArgs e) {
-      Logger.Info("Startup Event Fired, Checking DB for consistency");
+      Logger.Info("Stopped Event Fired, Checking DB for consistency");
       CheckForDeadJobs();
-      Logger.Info("Startup Event Done");
+      Logger.Info("Stopped Event Done");
     }
 
@@ -276,4 +276,5 @@
     /// </summary>
     public Response AbortJob(Guid jobId) {
+      Logger.Debug("JobManager.AbortJob: " + jobId);
       Response response = new Response();
 
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/LifecycleManager.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/LifecycleManager.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/LifecycleManager.cs	(revision 5093)
@@ -35,4 +35,30 @@
     private bool shutdownRequested;
     private PluginManager pm;
+
+    private Dictionary<Guid, DateTime> lastHeartbeats = new Dictionary<Guid, DateTime>();
+    public Dictionary<Guid, DateTime> LastHeartbeats {
+      get { return lastHeartbeats; }
+    }
+
+    /// <summary>
+    /// Contains a list job JobIds which have been sent to a slave, but the slave has not yet sent 
+    /// a jobProgress of the job with a heartbeat, because he has not finished downloading/deserializing it.
+    /// The number value indicates a TimeToLive count that is decremented with each server-heartbeat.
+    /// When the number reaches zero, the jobs is assumed to be lost and is set Offline again.
+    /// </summary>
+    private Dictionary<Guid, int> newAssignedJobs = new Dictionary<Guid, int>();
+    public Dictionary<Guid, int> NewAssignedJobs {
+      get { return newAssignedJobs; }
+    }
+
+    /// <summary>
+    /// When a slave reconnects and he has finished results waiting it calls IsJobStillNeeded. If the finished 
+    /// result has not yet been collected from anywhere else, the job will be sent by the slave and the job state is set to Pending.
+    /// Now the job be in pending state until it is received from the reconnected slave or the TimeToLive value of this dictionary has reached zero.
+    /// </summary>
+    private Dictionary<Guid, int> pendingJobs = new Dictionary<Guid, int>();
+    public Dictionary<Guid, int> PendingJobs {
+      get { return pendingJobs; }
+    }
 
     private TimeSpan interval = new TimeSpan(0, 0, 10);
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/SlaveCommunicator.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/SlaveCommunicator.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.Core/3.3/SlaveCommunicator.cs	(revision 5093)
@@ -36,4 +36,6 @@
 using HeuristicLab.Hive.Tracing;
 using HeuristicLab.PluginInfrastructure.Manager;
+using System.Web;
+using System.Web.SessionState;
 
 namespace HeuristicLab.Hive.Server.Core {
@@ -42,20 +44,4 @@
   /// </summary>
   public class SlaveCommunicator : ISlaveCommunicator, IInternalSlaveCommunicator {
-    private static Dictionary<Guid, DateTime> lastHeartbeats = new Dictionary<Guid, DateTime>();
-
-    /// <summary>
-    /// Contains a list job JobIds which have been sent to a slave, but the slave has not yet sent 
-    /// a jobProgress of the job with a heartbeat, because he has not finished downloading/deserializing it.
-    /// The number value indicates a TimeToLive count that is decremented with each server-heartbeat.
-    /// When the number reaches zero, the jobs is assumed to be lost and is set Offline again.
-    /// </summary>
-    private static Dictionary<Guid, int> newAssignedJobs = new Dictionary<Guid, int>();
-
-    /// <summary>
-    /// When a slave reconnects and he has finished results waiting it calls IsJobStillNeeded. If the finished 
-    /// result has not yet been collected from anywhere else, the job will be sent by the slave and the job state is set to Pending.
-    /// Now the job be in pending state until it is received from the reconnected slave or the TimeToLive value of this dictionary has reached zero.
-    /// </summary>
-    private static Dictionary<Guid, int> pendingJobs = new Dictionary<Guid, int>();
     private static int PENDING_TIMEOUT = 100;
 
@@ -74,4 +60,5 @@
     /// </summary>
     public SlaveCommunicator() {
+      Logger.Debug("ServiceCommunicator instantiated");
       lifecycleManager = ServiceLocator.GetLifecycleManager();
       jobManager = ServiceLocator.GetJobManager() as IInternalJobManager;
@@ -97,14 +84,14 @@
             SlaveDto slave = DaoLocator.SlaveDao.FindById(slaveId);
 
-            if (!lastHeartbeats.ContainsKey(slave.Id)) {
-              Logger.Info("No previous hearbeats are available for " + slave.Id + " although it is in state " + slave.State);
+            if (!lifecycleManager.LastHeartbeats.ContainsKey(slave.Id)) {
+              Logger.Info("No previous hearbeats are available for " + slave.Name + "(" + slave.Id + "), although it is in state " + slave.State);
 
               // add a heartbeat NOW and give the slave time to say something for HEARTBEAT_MAX_DIF
               // otherwise alls the slaves jobs would be aborted, which is not desirable if the server has just been restarted
               heartbeatLock.EnterWriteLock();
-              lastHeartbeats.Add(slave.Id, DateTime.Now);
+              lifecycleManager.LastHeartbeats.Add(slave.Id, DateTime.Now);
               heartbeatLock.ExitWriteLock();
             } else {
-              DateTime lastHeartbeatOfSlave = lastHeartbeats[slave.Id];
+              DateTime lastHeartbeatOfSlave = lifecycleManager.LastHeartbeats[slave.Id];
 
               TimeSpan diff = DateTime.Now.Subtract(lastHeartbeatOfSlave);
@@ -112,10 +99,10 @@
               if (diff.TotalSeconds > ApplicationConstants.HEARTBEAT_MAX_DIF) {
                 // if slave calculated jobs, the job must be reset
-                Logger.Info("Slave timed out and is on RESET");
+                Logger.Info("Slave timed out and is on RESET (no message for " + diff.TotalSeconds + " seconds.)");
                 foreach (JobDto job in DaoLocator.JobDao.FindActiveJobsOfSlave(slave)) {
                   DaoLocator.JobDao.SetJobOffline(job);
-                  lock (newAssignedJobs) {
-                    if (newAssignedJobs.ContainsKey(job.Id))
-                      newAssignedJobs.Remove(job.Id);
+                  lock (lifecycleManager.NewAssignedJobs) {
+                    if (lifecycleManager.NewAssignedJobs.ContainsKey(job.Id))
+                      lifecycleManager.NewAssignedJobs.Remove(job.Id);
                   }
                 }
@@ -127,5 +114,5 @@
                 Logger.Debug("removing it from the heartbeats list");
                 heartbeatLock.EnterWriteLock();
-                lastHeartbeats.Remove(slave.Id);
+                lifecycleManager.LastHeartbeats.Remove(slave.Id);
                 heartbeatLock.ExitWriteLock();
               }
@@ -148,11 +135,11 @@
 
       foreach (JobDto currJob in pendingJobsInDb) {
-        lock (pendingJobs) {
-          if (pendingJobs.ContainsKey(currJob.Id)) {
-            if (pendingJobs[currJob.Id] <= 0) {
+        lock (lifecycleManager.PendingJobs) {
+          if (lifecycleManager.PendingJobs.ContainsKey(currJob.Id)) {
+            if (lifecycleManager.PendingJobs[currJob.Id] <= 0) {
               currJob.State = JobState.Offline;
               DaoLocator.JobDao.Update(currJob);
             } else {
-              pendingJobs[currJob.Id]--;
+              lifecycleManager.PendingJobs[currJob.Id]--;
             }
           }
@@ -173,8 +160,8 @@
 
       heartbeatLock.EnterWriteLock();
-      if (lastHeartbeats.ContainsKey(slave.Id)) {
-        lastHeartbeats[slave.Id] = DateTime.Now;
+      if (lifecycleManager.LastHeartbeats.ContainsKey(slave.Id)) {
+        lifecycleManager.LastHeartbeats[slave.Id] = DateTime.Now;
       } else {
-        lastHeartbeats.Add(slave.Id, DateTime.Now);
+        lifecycleManager.LastHeartbeats.Add(slave.Id, DateTime.Now);
       }
       heartbeatLock.ExitWriteLock();
@@ -247,9 +234,11 @@
         using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = ApplicationConstants.ISOLATION_LEVEL_SCOPE })) {
           SlaveDto slave = UpdateSlaveData(heartbeatData);
+          DaoLocator.SlaveDao.Update(slave);
+
           SaveTimestamp(heartbeatData);
 
           //ProcessJobProgress(heartbeatData, response);
           response.ActionRequest = ProcessJobProgress(heartbeatData);
-
+          
           //check if new Cal must be loaded
           if (slave.CalendarSyncStatus == CalendarState.Fetch || slave.CalendarSyncStatus == CalendarState.ForceFetch) {
@@ -270,5 +259,4 @@
           }
 
-          DaoLocator.SlaveDao.Update(slave);
           scope.Complete();
         }
@@ -286,10 +274,10 @@
     }
 
-    private static void SaveTimestamp(HeartBeatData heartbeatData) {
+    private void SaveTimestamp(HeartBeatData heartbeatData) {
       heartbeatLock.EnterWriteLock();
-      if (lastHeartbeats.ContainsKey(heartbeatData.SlaveId)) {
-        lastHeartbeats[heartbeatData.SlaveId] = DateTime.Now;
+      if (lifecycleManager.LastHeartbeats.ContainsKey(heartbeatData.SlaveId)) {
+        lifecycleManager.LastHeartbeats[heartbeatData.SlaveId] = DateTime.Now;
       } else {
-        lastHeartbeats.Add(heartbeatData.SlaveId, DateTime.Now);
+        lifecycleManager.LastHeartbeats.Add(heartbeatData.SlaveId, DateTime.Now);
       }
       heartbeatLock.ExitWriteLock();
@@ -316,9 +304,10 @@
 
       // find all the jobs in jobProgress which are not in the database -> they are not supposed to be calculated by this slave
-      IEnumerable<Guid> jobsToAbort = GetJobsNotInDatabase(heartbeatData.SlaveId, heartbeatData.JobProgress.Keys);
-      foreach (Guid jobId in jobsToAbort) {
-        actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, jobId));
-        heartbeatData.JobProgress.Remove(jobId);
-      }
+      //IEnumerable<Guid> jobsToAbort = GetJobsNotCalculatedByThisSlave(heartbeatData.SlaveId, heartbeatData.JobProgress.Keys);
+      //foreach (Guid jobId in jobsToAbort) {
+      //  Logger.Error("Job shall not be caculated by this slave or does not exist in DB: " + jobId);
+      //  actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, jobId));
+      //  heartbeatData.JobProgress.Remove(jobId);
+      //}
 
       // process all the remaining jobProgresses
@@ -327,12 +316,13 @@
         if (curJob == null) {
           // job does not exist in db
+          Logger.Error("Job does not exist in DB: " + jobProgress.Key);
           actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, jobProgress.Key));
-          Logger.Error("Job does not exist in DB: " + jobProgress.Key);
         } else {
           curJob.Slave = DaoLocator.SlaveDao.GetSlaveForJob(curJob.Id);
+          Guid id = curJob.Slave != null ? curJob.Slave.Id : Guid.Empty;
           if (curJob.Slave == null || curJob.Slave.Id != heartbeatData.SlaveId) {
             // assigned slave does not match heartbeat
+            Logger.Error("The slave " + heartbeatData.SlaveId + " is not supposed to calculate Job: " + curJob.ToString());
             actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, curJob.Id));
-            Logger.Error("The slave " + heartbeatData.SlaveId + " is not supposed to calculate Job: " + curJob);
           } else {
             // save job execution time
@@ -341,4 +331,5 @@
             if (curJob.State == JobState.Aborted) {
               // a request to abort the job has been set
+              Logger.Error("Job is in state aborted, send AbortJob: " + curJob.Id);
               actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, curJob.Id));
             } else if (curJob.State == JobState.SnapshotRequested) {
@@ -355,16 +346,16 @@
       foreach (JobDto currJob in jobsOfSlave) {
         if (heartbeatData.JobProgress.ContainsKey(currJob.Id)) {
-          lock (newAssignedJobs) {
-            if (newAssignedJobs.ContainsKey(currJob.Id)) {
+          lock (lifecycleManager.NewAssignedJobs) {
+            if (lifecycleManager.NewAssignedJobs.ContainsKey(currJob.Id)) {
               Logger.Info("Job is sending a heart beat, removing it from the newAssignedJobList: " + currJob);
-              newAssignedJobs.Remove(currJob.Id);
+              lifecycleManager.NewAssignedJobs.Remove(currJob.Id);
             }
           }
         } else {
-          lock (newAssignedJobs) {
-            if (newAssignedJobs.ContainsKey(currJob.Id)) {
-              newAssignedJobs[currJob.Id]--;
-              Logger.Error("Job TTL Reduced by one for job: " + currJob + "and is now: " + newAssignedJobs[currJob.Id] + ". User that sucks: " + currJob.Slave);
-              if (newAssignedJobs[currJob.Id] <= 0) {
+          lock (lifecycleManager.NewAssignedJobs) {
+            if (lifecycleManager.NewAssignedJobs.ContainsKey(currJob.Id)) {
+              lifecycleManager.NewAssignedJobs[currJob.Id]--;
+              Logger.Error("Job TTL Reduced by one for job: " + currJob + "and is now: " + lifecycleManager.NewAssignedJobs[currJob.Id] + ". User that sucks: " + currJob.Slave);
+              if (lifecycleManager.NewAssignedJobs[currJob.Id] <= 0) {
                 Logger.Error("Job TTL reached Zero, Job gets removed: " + currJob + " and set back to offline. User that sucks: " + currJob.Slave);
 
@@ -374,5 +365,5 @@
                 actions.Add(new MessageContainer(MessageContainer.MessageType.AbortJob, currJob.Id));
 
-                newAssignedJobs.Remove(currJob.Id);
+                lifecycleManager.NewAssignedJobs.Remove(currJob.Id);
               }
             } else {
@@ -388,7 +379,7 @@
 
     /// <summary>
-    /// Returns the jobIds of the jobs which are not assigned to this slave in the database
-    /// </summary>
-    private IEnumerable<Guid> GetJobsNotInDatabase(Guid slaveId, IEnumerable<Guid> jobIds) {
+    /// Returns the jobIds of the jobs which are not assigned to this slave in the database (they either are not stored in DB or they are assigned
+    /// </summary>
+    private IEnumerable<Guid> GetJobsNotCalculatedByThisSlave(Guid slaveId, IEnumerable<Guid> jobIds) {
       IEnumerable<Guid> activeJobsOfSlave = DaoLocator.JobDao.FindActiveJobsOfSlave(DaoLocator.SlaveDao.FindById(slaveId)).Select(j => j.Id);
       return jobIds.Except(activeJobsOfSlave).ToList();
@@ -520,7 +511,7 @@
 
         Logger.Info("Job pulled: " + job2Calculate + " for user " + slaveId);
-        lock (newAssignedJobs) {
-          if (!newAssignedJobs.ContainsKey(job2Calculate.Id))
-            newAssignedJobs.Add(job2Calculate.Id, ApplicationConstants.JOB_TIME_TO_LIVE);
+        lock (lifecycleManager.NewAssignedJobs) {
+          if (!lifecycleManager.NewAssignedJobs.ContainsKey(job2Calculate.Id))
+            lifecycleManager.NewAssignedJobs.Add(job2Calculate.Id, ApplicationConstants.JOB_TIME_TO_LIVE);
         }
       } else {
@@ -701,6 +692,6 @@
 
       heartbeatLock.EnterWriteLock();
-      if (lastHeartbeats.ContainsKey(slaveId))
-        lastHeartbeats.Remove(slaveId);
+      if (lifecycleManager.LastHeartbeats.ContainsKey(slaveId))
+        lifecycleManager.LastHeartbeats.Remove(slaveId);
       heartbeatLock.ExitWriteLock();
 
@@ -745,6 +736,6 @@
       }
       job.State = JobState.Pending;
-      lock (pendingJobs) {
-        pendingJobs.Add(job.Id, PENDING_TIMEOUT);
+      lock (lifecycleManager.PendingJobs) {
+        lifecycleManager.PendingJobs.Add(job.Id, PENDING_TIMEOUT);
       }
 
@@ -765,7 +756,4 @@
         if (ipd != null) {
           response.List.Add(ConvertPluginDescriptorToDto(ipd));
-        } else {
-          response.StatusMessage = ResponseStatus.GetPlugins_PluginsNotAvailable;
-          return response;
         }
       }
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Server.LINQDataAccess/3.3/JobDao.cs	(revision 5093)
@@ -40,6 +40,5 @@
 
     public IEnumerable<JobDto> FindAll() {
-      return (from job in Context.Jobs
-              select EntityToDto(job, null)).ToList();
+      return (from job in Context.Jobs select EntityToDto(job, null)).ToArray();
     }
 
@@ -142,5 +141,5 @@
     public IEnumerable<JobDto> FindJobsWithFinishedChilds(Guid slaveId) {
       SlaveGroupDao cgd = new SlaveGroupDao();
-      
+
       List<Guid> idList = new List<Guid>(cgd.FindAllGroupAndParentGroupIdsForSlave(slaveId));
       //Add myself too - enables jobs for one specific host!
@@ -151,5 +150,5 @@
                     (from child in Context.Jobs
                      where child.ParentJobId == ar.Job.JobId
-                     select 
+                     select
                       (child.JobState == Enum.GetName(typeof(JobState), JobState.Finished) ||
                        child.JobState == Enum.GetName(typeof(JobState), JobState.Failed) ||
@@ -258,4 +257,5 @@
       target.ParentJobId = source.ParentJobId;
       
+
       foreach (Guid assignRessourceId in source.AssignedResourceIds) {
         if (!target.AssignedResources.Select(x => x.ResourceId).Contains(assignRessourceId)) {
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/HeuristicLab.Hive.Slave.Communication-3.3.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/HeuristicLab.Hive.Slave.Communication-3.3.csproj	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/HeuristicLab.Hive.Slave.Communication-3.3.csproj	(revision 5093)
@@ -111,5 +111,6 @@
   </ItemGroup>
   <ItemGroup>
-    <None Include="app.config">
+    <None Include="app.config" />
+    <None Include="f005pc.hagenberg.fhooe.at - app.config">
       <SubType>Designer</SubType>
     </None>
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/WcfService.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/WcfService.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/WcfService.cs	(revision 5093)
@@ -129,4 +129,5 @@
     #region PullJob
     public event System.EventHandler<GetJobCompletedEventArgs> GetJobCompleted;
+    public event System.EventHandler<EventArgs<Exception>> GetJobFailed;
     public void GetJobAsync(Guid guid) {
       Disposable<SlaveFacade.ISlaveFacade> service = ServiceLocator.Instance.StreamedSlaveFacadePool.GetService();
@@ -159,4 +160,6 @@
         catch (Exception e) {
           OnExceptionOccured(e);
+          if (GetJobFailed != null)
+            GetJobFailed(this, new EventArgs<Exception>(e));
         }
         finally {
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/app.config
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/app.config	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Communication/3.3/app.config	(revision 5093)
@@ -27,15 +27,18 @@
     </bindings>
     <client>
-      <endpoint address="http://localhost:9000/Hive/SlaveService.svc" binding="wsHttpBinding" bindingConfiguration="SlaveHttpEndpoint" contract="SlaveFacade.ISlaveFacade" name="SlaveHttpEndpoint">
+      <endpoint address="http://services.heuristiclab.com/Hive-3.3/SlaveService.svc" binding="wsHttpBinding" bindingConfiguration="SlaveHttpEndpoint" contract="SlaveFacade.ISlaveFacade" name="SlaveHttpEndpoint">
         <identity>
-          <certificate encodedValue="AwAAAAEAAAAUAAAAfEKvcVixnJay+q4hCPFuO0JL5TQgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTEwMTAxOTEwNTMxNVoXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDXwC5TGcAffd/0oAWHtm0s6YXVXEgXgb1AYmBkkkhkKIFJG/e/Z0KSYbJepmSJD44W3oOAVm+x1DAsZxU79HahDYgWCuHLMm1TLpwSmYOQ0kV3pGHWHhiWV7h7oGLds/eqZ2EOpaNGryfEPnrA4VmxY91vV5/2BTeVSWG6F8lRKQIDAQABo0kwRzBFBgNVHQEEPjA8gBAR7kBnMRHO5gzThEqda0wWoRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghCNN5wrUcXMmE/9xwp4TYa9MAkGBSsOAwIdBQADgYEAoPwEG4QTDXhlxERNDfsZmM2IhEpV42ppz1kEah2oYKDa/ElIMVtvqLv6flVtg18ENN/mEJWiHZ3NyP3qr2Pip+sh+/2WBiSbOaukES/CM7OJn9kJCImH7M/xqM8pxqY8IfgM6iBVrVj9uHqj3j2BBck+cYY8fKyh3CFifMIp6ac=" />
+          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
         </identity>
       </endpoint>
-      <endpoint address="net.tcp://localhost:9001/Hive/SlaveService.svc" binding="netTcpBinding" bindingConfiguration="SlaveTcpStreamedEndpoint" contract="SlaveFacade.ISlaveFacade" name="SlaveTcpStreamedEndpoint">
+      <endpoint address="net.tcp://services.heuristiclab.com:8000/Hive-3.3/SlaveService.svc" binding="netTcpBinding" bindingConfiguration="SlaveTcpStreamedEndpoint" contract="SlaveFacade.ISlaveFacade" name="SlaveTcpStreamedEndpoint">
         <identity>
-          <dns value="localhost"/>
+          <dns value="services.heuristiclab.com"/>
         </identity>
       </endpoint>
     </client>
   </system.serviceModel>
-<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
+  <startup>
+    <supportedRuntime version="v2.0.50727"/>
+  </startup>
+</configuration>
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/HeuristicLab.Hive.Slave.Console-3.3.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/HeuristicLab.Hive.Slave.Console-3.3.csproj	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/HeuristicLab.Hive.Slave.Console-3.3.csproj	(revision 5093)
@@ -79,4 +79,7 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="HeuristicLab.Clients.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <HintPath>..\..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Clients.Common-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <HintPath>..\..\..\..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Common-3.3.dll</HintPath>
@@ -204,4 +207,8 @@
       <Project>{134F93D7-E7C8-4ECD-9923-7F63259A60D8}</Project>
       <Name>HeuristicLab.Hive.Contracts-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Hive.Slave.Core\3.3\HeuristicLab.Hive.Slave.Core-3.3.csproj">
+      <Project>{5010BD86-23B7-4F8C-888A-76D21AD5266A}</Project>
+      <Name>HeuristicLab.Hive.Slave.Core-3.3</Name>
     </ProjectReference>
   </ItemGroup>
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/LogServiceReader.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/LogServiceReader.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/LogServiceReader.cs	(revision 5093)
@@ -6,4 +6,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Hive.Slave.Console.SlaveConsoleService;
+using HeuristicLab.Clients.Common;
 
 namespace HeuristicLab.Hive.Slave.Console {
@@ -25,16 +26,22 @@
     void timer_Tick(object sender, EventArgs e) {
       try {
-        using (var slaveClient = new SlaveConsoleCommunicatorClient()) {
-          var messages = slaveClient.GetLogMessages();
-          if (messages.Count < messageCount) {
-            messageCount = 0; // log got cleared
+        using (var slaveClient = ClientFactory.CreateClient<ISlaveConsoleCommunicator>("SlaveConsoleTcpEndpointClient")) {
+          try {
+            var messages = slaveClient.Obj.GetLogMessages();
+            if (messages.Count < messageCount) {
+              messageCount = 0; // log got cleared
+            }
+            var newMessages = messages.GetRange(messageCount, messages.Count - messageCount);
+            messageCount = messages.Count;
+            OnMoreData(newMessages);
+
           }
-          var newMessages = messages.GetRange(messageCount, messages.Count - messageCount);
-          messageCount = messages.Count;
-          OnMoreData(newMessages);
+          catch (Exception ex) {
+            OnMoreData(new List<string> { "Error fetching log: " + ex.ToString() });
+          }
         }
       }
       catch (Exception ex) {
-        OnMoreData(new List<string> { "Error fetching log: " + ex.ToString() });
+        OnMoreData(new List<string> { "Error in slave-communication: " + ex.ToString() });
       }
     }
@@ -48,5 +55,5 @@
       var handler = MoreData;
       var newData = string.Join(Environment.NewLine, newMessages.ToArray());
-      if(newMessages.Count() > 0) newData += Environment.NewLine;
+      if (newMessages.Count() > 0) newData += Environment.NewLine;
       if (handler != null) MoreData(this, newData);
     }
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/app.config
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/app.config	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Console/3.3/app.config	(revision 5093)
@@ -16,6 +16,6 @@
     <bindings>
       <netTcpBinding>
-        <binding name="SlaveConsoleTcpEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxReceivedMessageSize="104857600">
-          <readerQuotas maxDepth="32" maxStringContentLength="104857600" maxArrayLength="104857600" maxBytesPerRead="104857600" maxNameTableCharCount="104857600"/>
+        <binding name="SlaveConsoleTcpEndpointBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="104857600" maxBufferSize="104857600" maxReceivedMessageSize="104857600">
+          <readerQuotas maxDepth="320" maxStringContentLength="104857600" maxArrayLength="104857600" maxBytesPerRead="104857600" maxNameTableCharCount="104857600"/>
           <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
           <security mode="None">
@@ -27,5 +27,5 @@
     </bindings>
     <client>
-      <endpoint address="net.tcp://localhost:8000/SlaveConsoleService" binding="netTcpBinding" bindingConfiguration="SlaveConsoleTcpEndpoint" contract="SlaveConsoleService.ISlaveConsoleCommunicator" name="SlaveConsoleTcpEndpoint"/>
+      <endpoint address="net.tcp://localhost:8000/SlaveConsoleService" binding="netTcpBinding" bindingConfiguration="SlaveConsoleTcpEndpointBinding" contract="SlaveConsoleService.ISlaveConsoleCommunicator" name="SlaveConsoleTcpEndpointClient"/>
     </client>
   </system.serviceModel>
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Core/3.3/Core.cs
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Core/3.3/Core.cs	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HeuristicLab.Hive.Slave.Core/3.3/Core.cs	(revision 5093)
@@ -115,4 +115,5 @@
       wcfService.ProcessSnapshotCompleted += new EventHandler<ProcessSnapshotCompletedEventArgs>(wcfService_ProcessSnapshotCompleted);
       wcfService.Connected += new EventHandler(wcfService_Connected);
+      wcfService.GetJobFailed += new EventHandler<EventArgs<Exception>>(wcfService_GetJobFailed);
     }
 
@@ -122,4 +123,5 @@
       wcfService.ProcessSnapshotCompleted -= new EventHandler<ProcessSnapshotCompletedEventArgs>(wcfService_ProcessSnapshotCompleted);
       wcfService.Connected -= new EventHandler(wcfService_Connected);
+      wcfService.GetJobFailed -= new EventHandler<EventArgs<Exception>>(wcfService_GetJobFailed);
     }
 
@@ -457,4 +459,9 @@
     }
 
+    void wcfService_GetJobFailed(object sender, EventArgs<Exception> e) {
+      Logger.Info("GetJobFailed: " + e.Value.ToString());
+      CurrentlyFetching = false;
+    }
+
     private void FetchCalendarFromServer() {
       ResponseCalendar calres = wcfService.GetCalendarSync(ConfigManager.Instance.GetClientInfo().Id);
Index: branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HiveWeb/Hive-3.3/Web.config
===================================================================
--- branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HiveWeb/Hive-3.3/Web.config	(revision 5069)
+++ branches/HeuristicLab.Hive-3.3/sources/HeuristicLab.Hive/HiveWeb/Hive-3.3/Web.config	(revision 5093)
@@ -7,6 +7,5 @@
   </configSections>
   
-  
-  <system.diagnostics>
+  <!--<system.diagnostics>
     <sources>
       <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
@@ -43,6 +42,5 @@
       </add>
     </sharedListeners>
-  </system.diagnostics>
-  
+  </system.diagnostics>-->
   
   <applicationSettings>
