Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs	(revision 6988)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs	(revision 6989)
@@ -53,6 +53,11 @@
     private ConfigManager configManager;
     private PluginManager pluginManager;
-
-    public Core() {
+    private bool startClientComService;
+
+    public Core()
+      : this(true) {
+    }
+
+    public Core(bool startClientComService) {
       var log = new ThreadSafeLog(Settings.Default.MaxLogCount);
       this.pluginManager = new PluginManager(WcfService.Instance, log);
@@ -64,4 +69,6 @@
       this.configManager = new ConfigManager(taskManager);
       ConfigManager.Instance = this.configManager;
+
+      this.startClientComService = startClientComService;
     }
 
@@ -74,7 +81,9 @@
 
       try {
-        //start the client communication service (pipe between slave and slave gui)
-        slaveComm = new ServiceHost(typeof(SlaveCommunicationService));
-        slaveComm.Open();
+        if (startClientComService) {
+          //start the client communication service (pipe between slave and slave gui)
+          slaveComm = new ServiceHost(typeof(SlaveCommunicationService));
+          slaveComm.Open();
+        }
         clientCom = SlaveClientCom.Instance.ClientCom;
 
@@ -473,6 +482,8 @@
       SlaveClientCom.Close();
 
-      if (slaveComm.State != CommunicationState.Closed)
-        slaveComm.Close();
+      if (startClientComService) {
+        if (slaveComm.State != CommunicationState.Closed)
+          slaveComm.Close();
+      }
     }
 
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/HeuristicLab.Clients.Hive.Slave-3.3.csproj
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/HeuristicLab.Clients.Hive.Slave-3.3.csproj	(revision 6988)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/HeuristicLab.Clients.Hive.Slave-3.3.csproj	(revision 6989)
@@ -128,4 +128,5 @@
   <ItemGroup>
     <Compile Include="Exceptions\TaskFailedException.cs" />
+    <Compile Include="IClientCom.cs" />
     <Compile Include="Manager\ConfigManager.cs" />
     <Compile Include="Exceptions\SerializationException.cs" />
@@ -142,4 +143,5 @@
     <Compile Include="Exceptions\OutOfCoresException.cs" />
     <Compile Include="Exceptions\AppDomainNotCreatedException.cs" />
+    <Compile Include="PipeCom.cs" />
     <Compile Include="SlaveClientCom.cs" />
     <Compile Include="Core.cs" />
@@ -163,4 +165,5 @@
     <Compile Include="SlaveStatusInfo.cs" />
     <Compile Include="StatusCommons.cs" />
+    <Compile Include="TraceCom.cs" />
     <Compile Include="WcfService.cs" />
     <None Include="app.config" />
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/IClientCom.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/IClientCom.cs	(revision 6989)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/IClientCom.cs	(revision 6989)
@@ -0,0 +1,8 @@
+﻿
+using HeuristicLab.Clients.Hive.SlaveCore.ServiceContracts;
+namespace HeuristicLab.Clients.Hive.SlaveCore {
+  public interface IClientCom {
+    ISlaveCommunication GetSlaveCom();
+    void Close();
+  }
+}
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/PipeCom.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/PipeCom.cs	(revision 6989)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/PipeCom.cs	(revision 6989)
@@ -0,0 +1,76 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.ServiceModel;
+using HeuristicLab.Clients.Hive.SlaveCore.Properties;
+using HeuristicLab.Clients.Hive.SlaveCore.ServiceContracts;
+namespace HeuristicLab.Clients.Hive.SlaveCore {
+  public class PipeCom : IClientCom {
+    private static DuplexChannelFactory<ISlaveCommunication> pipeFactory;
+    private ISlaveCommunication clientCom;
+
+    public PipeCom() {
+      SetupClientCom();
+    }
+
+    public ISlaveCommunication GetSlaveCom() {
+      return clientCom;
+    }
+
+    private void SetupClientCom() {
+      DummyListener dummy = new DummyListener();
+      try {
+        pipeFactory = new DuplexChannelFactory<ISlaveCommunication>(dummy, Settings.Default.SlaveCommunicationServiceEndpoint);
+
+      }
+      catch {
+        EventLogManager.LogMessage("Couldn't create pipe for SlaveClientCom with config!");
+
+        try {
+          pipeFactory = new DuplexChannelFactory<ISlaveCommunication>(dummy, new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/HeuristicLabSlaveCom"));
+        }
+        catch {
+          EventLogManager.LogMessage("Couldn't create pipe for SlaveClientCom with fixed addresse!");
+          return;
+        }
+      }
+      pipeFactory.Faulted += new System.EventHandler(pipeFactory_Faulted);
+
+      ISlaveCommunication pipeProxy = pipeFactory.CreateChannel();
+      clientCom = pipeProxy;
+    }
+
+    void pipeFactory_Faulted(object sender, System.EventArgs e) {
+      EventLogManager.LogMessage("SlaveClientCom just faulted. Trying to repair it...");
+
+      try {
+        pipeFactory.Faulted -= new System.EventHandler(pipeFactory_Faulted);
+        SetupClientCom();
+      }
+      catch { }
+    }
+
+    public void Close() {
+      if (pipeFactory.State != CommunicationState.Closed && pipeFactory.State != CommunicationState.Faulted)
+        pipeFactory.Close();
+    }
+  }
+}
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/Properties/Settings.Designer.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/Properties/Settings.Designer.cs	(revision 6988)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/Properties/Settings.Designer.cs	(revision 6989)
@@ -299,4 +299,16 @@
             }
         }
+        
+        [global::System.Configuration.UserScopedSettingAttribute()]
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.Configuration.DefaultSettingValueAttribute("Pipe")]
+        public global::HeuristicLab.Clients.Hive.SlaveCore.ClientComType ClientComType {
+            get {
+                return ((global::HeuristicLab.Clients.Hive.SlaveCore.ClientComType)(this["ClientComType"]));
+            }
+            set {
+                this["ClientComType"] = value;
+            }
+        }
     }
 }
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/Properties/Settings.settings
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/Properties/Settings.settings	(revision 6988)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/Properties/Settings.settings	(revision 6989)
@@ -72,4 +72,7 @@
       <Value Profile="(Default)">00:00:20</Value>
     </Setting>
+    <Setting Name="ClientComType" Type="HeuristicLab.Clients.Hive.SlaveCore.ClientComType" Scope="User">
+      <Value Profile="(Default)">Pipe</Value>
+    </Setting>
   </Settings>
 </SettingsFile>
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/SlaveClientCom.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/SlaveClientCom.cs	(revision 6988)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/SlaveClientCom.cs	(revision 6989)
@@ -20,9 +20,10 @@
 #endregion
 
-using System.ServiceModel;
+using System;
+using HeuristicLab.Clients.Hive.SlaveCore.ServiceContracts;
 using HeuristicLab.Clients.Hive.SlaveCore.Properties;
-using HeuristicLab.Clients.Hive.SlaveCore.ServiceContracts;
+namespace HeuristicLab.Clients.Hive.SlaveCore {
 
-namespace HeuristicLab.Clients.Hive.SlaveCore {
+  public enum ClientComType { Pipe, Trace };
 
   /// <summary>
@@ -31,5 +32,5 @@
   public class SlaveClientCom {
     private static SlaveClientCom instance;
-    private static DuplexChannelFactory<ISlaveCommunication> pipeFactory;
+    private static IClientCom clientComInstance;
     public ISlaveCommunication ClientCom { get; set; }
 
@@ -47,43 +48,28 @@
     }
 
-    private SlaveClientCom() {
-      SetupClientCom();
+    public static IClientCom ClientComInstance {
+      get {
+        if (clientComInstance != null) {
+          return clientComInstance;
+        }
+        throw new NullReferenceException("No instance of SlaveClientCom<T>");
+      }
     }
 
-    private void SetupClientCom() {
-      DummyListener dummy = new DummyListener();
-      try {
-        pipeFactory = new DuplexChannelFactory<ISlaveCommunication>(dummy, Settings.Default.SlaveCommunicationServiceEndpoint);
+    private SlaveClientCom() {
+      ClientComType type = Settings.Default.ClientComType;
+      if (type == ClientComType.Pipe) {
+        clientComInstance = new PipeCom();
+      } else if (type == ClientComType.Trace) {
+        clientComInstance = new TraceCom();
+      } else {
+        throw new InvalidStateException("Invalid client communication type");
       }
-      catch {
-        EventLogManager.LogMessage("Couldn't create pipe for SlaveClientCom with config!");
 
-        try {
-          pipeFactory = new DuplexChannelFactory<ISlaveCommunication>(dummy, new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/HeuristicLabSlaveCom"));
-        }
-        catch {
-          EventLogManager.LogMessage("Couldn't create pipe for SlaveClientCom with fixed addresse!");
-          return;
-        }
-      }
-      pipeFactory.Faulted += new System.EventHandler(pipeFactory_Faulted);
-
-      ISlaveCommunication pipeProxy = pipeFactory.CreateChannel();
-      ClientCom = pipeProxy;
-    }
-
-    void pipeFactory_Faulted(object sender, System.EventArgs e) {
-      EventLogManager.LogMessage("SlaveClientCom just faulted. Trying to repair it...");
-
-      try {
-        pipeFactory.Faulted -= new System.EventHandler(pipeFactory_Faulted);
-        SetupClientCom();
-      }
-      catch { }
+      ClientCom = clientComInstance.GetSlaveCom();
     }
 
     public static void Close() {
-      if (pipeFactory.State != CommunicationState.Closed && pipeFactory.State != CommunicationState.Faulted)
-        pipeFactory.Close();
+      ClientComInstance.Close();
     }
   }
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/TraceCom.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/TraceCom.cs	(revision 6989)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/TraceCom.cs	(revision 6989)
@@ -0,0 +1,96 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Diagnostics;
+using HeuristicLab.Clients.Hive.SlaveCore.ServiceContracts;
+namespace HeuristicLab.Clients.Hive.SlaveCore {
+
+  /// <summary>
+  /// Class for writing the client communication to Trace
+  /// </summary>
+  public class TraceCom : IClientCom {
+    private ISlaveCommunication clientCom;
+
+    public TraceCom() {
+      clientCom = new TraceSlaveCommunication();
+    }
+
+    public ISlaveCommunication GetSlaveCom() {
+      return clientCom;
+    }
+
+    public void Close() {
+      // Nothing to do here ...
+    }
+
+    #region Private Class
+    private class TraceSlaveCommunication : ISlaveCommunication {
+
+      public TraceSlaveCommunication() {
+
+      }
+
+      public StatusCommons Subscribe() {
+        Trace.WriteLine("Subscribe");
+        return new StatusCommons();
+      }
+
+      public bool Unsubscribe() {
+        Trace.WriteLine("Unsubscribe");
+        return false;
+      }
+
+      public void Restart() {
+        Trace.WriteLine("Restart");
+      }
+
+      public void Sleep() {
+        Trace.WriteLine("Sleep");
+      }
+
+      public void PauseAll() {
+        Trace.WriteLine("PauseAll");
+      }
+
+      public void StopAll() {
+        Trace.WriteLine("StopAll");
+      }
+
+      public void AbortAll() {
+        Trace.WriteLine("AbortAll");
+      }
+
+      public void LogMessage(string message) {
+        Trace.WriteLine(message);
+      }
+
+      public void StatusChanged(StatusCommons status) {
+        Trace.WriteLine("StatusChanged: " + status);
+      }
+
+      public void Shutdown() {
+        Trace.WriteLine("Shutdown");
+      }
+    }
+
+    #endregion
+  }
+}
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/app.config
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/app.config	(revision 6988)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Slave/3.3/app.config	(revision 6989)
@@ -84,4 +84,7 @@
         <value>00:00:20</value>
       </setting>
+      <setting name="ClientComType" serializeAs="String">
+        <value>Pipe</value>
+      </setting>
     </HeuristicLab.Clients.Hive.SlaveCore.Properties.Settings>
   </userSettings>
@@ -108,7 +111,7 @@
     <client>
       <endpoint name="SlaveCommunicationServiceEndpoint" address="net.pipe://localhost/HeuristicLabSlaveCom" binding="netNamedPipeBinding" contract="HeuristicLab.Clients.Hive.SlaveCore.ServiceContracts.ISlaveCommunication"/>
-      <endpoint address="http://services.heuristiclab.com/Hive-3.3/HiveService.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_Hive" contract="HeuristicLab.Clients.Hive.IHiveService" name="wsHttpBinding_IHiveService">
+      <endpoint address="http://localhost/Hive-3.3/HiveService.svc" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_Hive" contract="HeuristicLab.Clients.Hive.IHiveService" name="wsHttpBinding_IHiveService">
         <identity>
-          <certificate encodedValue="AwAAAAEAAAAUAAAAwK1+2oAmcy/mI2P2QjyiJRh0y60gAAAAAQAAACoCAAAwggImMIIBj6ADAgECAhAIkseQ2EEhgU720qJA61gqMA0GCSqGSIb3DQEBBAUAMCQxIjAgBgNVBAMTGXNlcnZpY2VzLmhldXJpc3RpY2xhYi5jb20wHhcNMTAwNTExMTExNDAyWhcNMzkxMjMxMjM1OTU5WjAkMSIwIAYDVQQDExlzZXJ2aWNlcy5oZXVyaXN0aWNsYWIuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq26Bwmwc7k+4W30qLQ2j+FInEL5BuH6opDY6CSlrtt3xQS/anrhvpbf3QghLDVINzcHkzbPmm/SguG4F85QLB6xO+tJaOvRo0iEK5g3c307vMIru7FJwk/OhplEQ5J1hbDgL3zOJlrWlgtqRVxCtVdF3XroI9BctOt1NkeKv9ewIDAQABo1kwVzBVBgNVHQEETjBMgBCjbgdYd4j5JgUuJ1Wo/GxroSYwJDEiMCAGA1UEAxMZc2VydmljZXMuaGV1cmlzdGljbGFiLmNvbYIQCJLHkNhBIYFO9tKiQOtYKjANBgkqhkiG9w0BAQQFAAOBgQAb/2xk2uQad68shSPl/uixWgvFI8WkxOTBopOLaLtDxwCeZ3mWVHdV9VnixHtThubnEBXAhYOCQSIXWtQuXFWO+gH3YyjTRJY5kTmXyuvBRTn3/so5SrQ7Rdlm9hf6E5YVX3tCjAy7ybUyaDUkQfmH5vmvgvpMzRfsJ1qhnUpJiQ=="/>
+          <certificate encodedValue="AwAAAAEAAAAUAAAADzsDXayAbGN7jnpbyVfY0wz9YFcgAAAAAQAAAPIBAAAwggHuMIIBW6ADAgECAhCzetYpS2a8okHn43VcHxP0MAkGBSsOAwIdBQAwFDESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTExMTEwNDE1NTQxN1oXDTM5MTIzMTIzNTk1OVowFDESMBAGA1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCSYyb95Mu+uX+bV/qP9GQAo3QVuolC3JSBYCPb0hwDzt1Noef8m3W9C6oBwHp1vFrhYCjgcSKkq/6Ahz1FTInvfgM0ryC+wuNU3Qf8wnPBKQWy1XzfNgooJXfZVj2aJBhtfPCduf0i20bKLq6Vln3x7LJ2fQJl726PEydisDsVPQIDAQABo0kwRzBFBgNVHQEEPjA8gBBOTq0016GUpf8I0+rSZ7SBoRYwFDESMBAGA1UEAxMJbG9jYWxob3N0ghCzetYpS2a8okHn43VcHxP0MAkGBSsOAwIdBQADgYEAYUKhADqju3dh+9Gp47yDnOiJ/VIBa2uc4TOntXb5pgesS6vwd8assO8fmcT0D2IOJ+V4Q0H3Q8z3AqE9FoPrdj6/1CX+aQOSPwTWhs5AHRk6SvDLDaQtJPTNwldlyxmVTSZFq1wqLaRFCZ1U3furTOmHVOnIotIp+zm63bqs5U0=" />
         </identity>
       </endpoint>
