Index: unk/sources/HeuristicLab.Hive.Client.Console/3.2/EventLogEntryForm.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/EventLogEntryForm.Designer.cs	(revision 2061)
+++ 	(revision )
@@ -1,104 +1,0 @@
-﻿namespace HeuristicLab.Hive.Client.Console {
-  partial class EventLogEntryForm {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.lbDateLabel = new System.Windows.Forms.Label();
-      this.lbDate = new System.Windows.Forms.Label();
-      this.lbId = new System.Windows.Forms.Label();
-      this.lbIdLabel = new System.Windows.Forms.Label();
-      this.txtMessage = new System.Windows.Forms.TextBox();
-      this.SuspendLayout();
-      // 
-      // lbDateLabel
-      // 
-      this.lbDateLabel.AutoSize = true;
-      this.lbDateLabel.Location = new System.Drawing.Point(13, 27);
-      this.lbDateLabel.Name = "lbDateLabel";
-      this.lbDateLabel.Size = new System.Drawing.Size(80, 13);
-      this.lbDateLabel.TabIndex = 1;
-      this.lbDateLabel.Text = "Date and Time:";
-      // 
-      // lbDate
-      // 
-      this.lbDate.AutoSize = true;
-      this.lbDate.Location = new System.Drawing.Point(89, 27);
-      this.lbDate.Name = "lbDate";
-      this.lbDate.Size = new System.Drawing.Size(23, 13);
-      this.lbDate.TabIndex = 3;
-      this.lbDate.Text = "null";
-      // 
-      // lbId
-      // 
-      this.lbId.AutoSize = true;
-      this.lbId.Location = new System.Drawing.Point(27, 9);
-      this.lbId.Name = "lbId";
-      this.lbId.Size = new System.Drawing.Size(23, 13);
-      this.lbId.TabIndex = 6;
-      this.lbId.Text = "null";
-      // 
-      // lbIdLabel
-      // 
-      this.lbIdLabel.AutoSize = true;
-      this.lbIdLabel.Location = new System.Drawing.Point(13, 9);
-      this.lbIdLabel.Name = "lbIdLabel";
-      this.lbIdLabel.Size = new System.Drawing.Size(19, 13);
-      this.lbIdLabel.TabIndex = 5;
-      this.lbIdLabel.Text = "Id:";
-      // 
-      // txtMessage
-      // 
-      this.txtMessage.BackColor = System.Drawing.SystemColors.InactiveBorder;
-      this.txtMessage.Location = new System.Drawing.Point(16, 55);
-      this.txtMessage.Multiline = true;
-      this.txtMessage.Name = "txtMessage";
-      this.txtMessage.ReadOnly = true;
-      this.txtMessage.Size = new System.Drawing.Size(250, 179);
-      this.txtMessage.TabIndex = 7;
-      // 
-      // EventLogEntryForm
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(278, 246);
-      this.Controls.Add(this.txtMessage);
-      this.Controls.Add(this.lbId);
-      this.Controls.Add(this.lbIdLabel);
-      this.Controls.Add(this.lbDate);
-      this.Controls.Add(this.lbDateLabel);
-      this.Name = "EventLogEntryForm";
-      this.Text = "Detail";
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Label lbDateLabel;
-    private System.Windows.Forms.Label lbDate;
-    private System.Windows.Forms.Label lbId;
-    private System.Windows.Forms.Label lbIdLabel;
-    private System.Windows.Forms.TextBox txtMessage;
-  }
-}
Index: unk/sources/HeuristicLab.Hive.Client.Console/3.2/EventLogEntryForm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/EventLogEntryForm.cs	(revision 2061)
+++ 	(revision )
@@ -1,20 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-using System.Diagnostics;
-
-namespace HeuristicLab.Hive.Client.Console {
-  public partial class EventLogEntryForm : Form {
-    public EventLogEntryForm(HiveEventEntry curEventEntry) {
-      InitializeComponent();
-      lbDate.Text = curEventEntry.EventDate;
-      lbId.Text = curEventEntry.ID;
-      txtMessage.Text = curEventEntry.Message;
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Hive.Client.Console/3.2/EventLogEntryForm.resx
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/EventLogEntryForm.resx	(revision 2061)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HeuristicLab.Hive.Client.Console-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HeuristicLab.Hive.Client.Console-3.2.csproj	(revision 2061)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HeuristicLab.Hive.Client.Console-3.2.csproj	(revision 2062)
@@ -99,10 +99,4 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="EventLogEntryForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="EventLogEntryForm.Designer.cs">
-      <DependentUpon>EventLogEntryForm.cs</DependentUpon>
-    </Compile>
     <Compile Include="HiveClientConsole.cs">
       <SubType>Form</SubType>
@@ -113,12 +107,6 @@
     <Compile Include="HiveClientConsolePlugin.cs" />
     <Compile Include="HiveClientConsoleApplication.cs" />
-    <Compile Include="HiveEventEntry.cs" />
-    <Compile Include="ListViewColumnSorterDate.cs" />
     <Compile Include="LogFileReader.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <EmbeddedResource Include="EventLogEntryForm.resx">
-      <DependentUpon>EventLogEntryForm.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
     <EmbeddedResource Include="HiveClientConsole.resx">
       <DependentUpon>HiveClientConsole.cs</DependentUpon>
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.Designer.cs	(revision 2061)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.Designer.cs	(revision 2062)
@@ -46,5 +46,5 @@
     private void InitializeComponent() {
         this.components = new System.ComponentModel.Container();
-        Calendar.DrawTool drawTool2 = new Calendar.DrawTool();
+        Calendar.DrawTool drawTool6 = new Calendar.DrawTool();
         System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HiveClientConsole));
         this.dvOnline = new Calendar.DayView();
@@ -82,7 +82,7 @@
         this.txtLog = new System.Windows.Forms.TextBox();
         this.tabPage2 = new System.Windows.Forms.TabPage();
+        this.btnSaveCal = new System.Windows.Forms.Button();
         this.pictureBox1 = new System.Windows.Forms.PictureBox();
         this.groupBox1 = new System.Windows.Forms.GroupBox();
-        this.btnSaveCal = new System.Windows.Forms.Button();
         this.txttimeTo = new System.Windows.Forms.DateTimePicker();
         this.txttimeFrom = new System.Windows.Forms.DateTimePicker();
@@ -112,6 +112,6 @@
         // dvOnline
         // 
-        drawTool2.DayView = this.dvOnline;
-        this.dvOnline.ActiveTool = drawTool2;
+        drawTool6.DayView = this.dvOnline;
+        this.dvOnline.ActiveTool = drawTool6;
         this.dvOnline.AmPmDisplay = false;
         this.dvOnline.AppointmentDuration = Calendar.AppointmentSlotDuration.SixtyMinutes;
@@ -137,5 +137,4 @@
         // tcClientConsole
         // 
-        this.tcClientConsole.Appearance = System.Windows.Forms.TabAppearance.FlatButtons;
         this.tcClientConsole.Controls.Add(this.tpConnection);
         this.tcClientConsole.Controls.Add(this.tabPage2);
@@ -257,7 +256,7 @@
         // 
         this.gbJobCommon.Controls.Add(this.lvJobDetail);
-        this.gbJobCommon.Location = new System.Drawing.Point(8, 152);
+        this.gbJobCommon.Location = new System.Drawing.Point(8, 139);
         this.gbJobCommon.Name = "gbJobCommon";
-        this.gbJobCommon.Size = new System.Drawing.Size(412, 252);
+        this.gbJobCommon.Size = new System.Drawing.Size(269, 265);
         this.gbJobCommon.TabIndex = 13;
         this.gbJobCommon.TabStop = false;
@@ -270,9 +269,10 @@
             this.chSince,
             this.chProgress});
+        this.lvJobDetail.Dock = System.Windows.Forms.DockStyle.Fill;
         this.lvJobDetail.FullRowSelect = true;
         this.lvJobDetail.GridLines = true;
-        this.lvJobDetail.Location = new System.Drawing.Point(6, 14);
+        this.lvJobDetail.Location = new System.Drawing.Point(3, 16);
         this.lvJobDetail.Name = "lvJobDetail";
-        this.lvJobDetail.Size = new System.Drawing.Size(398, 232);
+        this.lvJobDetail.Size = new System.Drawing.Size(263, 246);
         this.lvJobDetail.TabIndex = 0;
         this.lvJobDetail.UseCompatibleStateImageBehavior = false;
@@ -291,5 +291,4 @@
         // 
         this.chProgress.Text = "Progress";
-        this.chProgress.Width = 200;
         // 
         // gbCommon
@@ -435,7 +434,7 @@
         // 
         this.gbEventLog.Controls.Add(this.txtLog);
-        this.gbEventLog.Location = new System.Drawing.Point(426, 152);
+        this.gbEventLog.Location = new System.Drawing.Point(283, 139);
         this.gbEventLog.Name = "gbEventLog";
-        this.gbEventLog.Size = new System.Drawing.Size(412, 252);
+        this.gbEventLog.Size = new System.Drawing.Size(555, 265);
         this.gbEventLog.TabIndex = 7;
         this.gbEventLog.TabStop = false;
@@ -444,10 +443,10 @@
         // txtLog
         // 
-        this.txtLog.Location = new System.Drawing.Point(4, 14);
+        this.txtLog.Location = new System.Drawing.Point(6, 14);
         this.txtLog.Multiline = true;
         this.txtLog.Name = "txtLog";
         this.txtLog.ReadOnly = true;
         this.txtLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-        this.txtLog.Size = new System.Drawing.Size(402, 232);
+        this.txtLog.Size = new System.Drawing.Size(543, 248);
         this.txtLog.TabIndex = 0;
         // 
@@ -466,4 +465,14 @@
         this.tabPage2.Text = "Schedule";
         this.tabPage2.UseVisualStyleBackColor = true;
+        // 
+        // btnSaveCal
+        // 
+        this.btnSaveCal.Location = new System.Drawing.Point(633, 138);
+        this.btnSaveCal.Name = "btnSaveCal";
+        this.btnSaveCal.Size = new System.Drawing.Size(199, 23);
+        this.btnSaveCal.TabIndex = 41;
+        this.btnSaveCal.Text = "Save calender";
+        this.btnSaveCal.UseVisualStyleBackColor = true;
+        this.btnSaveCal.Click += new System.EventHandler(this.btnSaveCal_Click);
         // 
         // pictureBox1
@@ -495,14 +504,4 @@
         this.groupBox1.TabStop = false;
         // 
-        // btnSaveCal
-        // 
-        this.btnSaveCal.Location = new System.Drawing.Point(633, 138);
-        this.btnSaveCal.Name = "btnSaveCal";
-        this.btnSaveCal.Size = new System.Drawing.Size(199, 23);
-        this.btnSaveCal.TabIndex = 41;
-        this.btnSaveCal.Text = "Save calender";
-        this.btnSaveCal.UseVisualStyleBackColor = true;
-        this.btnSaveCal.Click += new System.EventHandler(this.btnSaveCal_Click);
-        // 
         // txttimeTo
         // 
@@ -627,5 +626,4 @@
         this.Name = "HiveClientConsole";
         this.Text = "Client Console (loading...)";
-        this.Load += new System.EventHandler(this.HiveClientConsole_Load);
         this.tcClientConsole.ResumeLayout(false);
         this.tpConnection.ResumeLayout(false);
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.cs	(revision 2061)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.cs	(revision 2062)
@@ -39,7 +39,12 @@
 
     #region Delegates
-
+    
+    //delegate to write text in the textbox from another process
     public delegate void AppendTextDelegate(String message);
+
+    //delegate to remove text in the textbox from another process
     public delegate void RemoveTextDelegate(int newLength, int maxChars);
+
+    //delegate fired, if a dialog is being closed
     public delegate void OnDialogClosedDelegate(RecurrentEvent e);
 
@@ -52,12 +57,15 @@
 
         private const string ENDPOINTADRESS = "net.tcp://127.0.0.1:8000/ClientConsole/ClientConsoleCommunicator";
-        //private const string EVENTLOGNAME = "Hive Client";
-
-        //private EventLog HiveClientEventLog;
+
+        //the logfilereader
         private LogFileReader logFileReader;
-        private ClientConsoleCommunicatorClient cccc;
+
+        //communication with the client
+        private ClientConsoleCommunicatorClient clientCommunicator;
+
+        //the timer for refreshing the gui
         private System.Windows.Forms.Timer refreshTimer;
-        //private ListViewColumnSorterDate lvwColumnSorter;
-
+
+        //the list of appointments in the calender
         [XmlArray("Appointments")]
         [XmlArrayItem("Appointment", typeof(Appointment))]
@@ -80,18 +88,32 @@
         }
 
-        private void InitTestCalenderEntries()
-        {
-            DateTime date = DateTime.Now;
-            while (date.Year == 2009)
-            {
-
-                onlineTimes.Add(CreateAppointment(date.AddHours(1), date.AddHours(3), false));
-                date = date.AddDays(1);
-            }
-        }
-
         #endregion
 
         #region Methods
+
+        #region Client connection
+
+        private void ConnectToClient()
+        {
+            try
+            {
+                clientCommunicator = new ClientConsoleCommunicatorClient(WcfSettings.GetBinding(), new EndpointAddress(ENDPOINTADRESS));
+                clientCommunicator.GetStatusInfosCompleted += new EventHandler<GetStatusInfosCompletedEventArgs>(clientCommunicator_GetStatusInfosCompleted);
+                clientCommunicator.GetCurrentConnectionCompleted += new EventHandler<GetCurrentConnectionCompletedEventArgs>(clientCommunicator_GetCurrentConnectionCompleted);
+                clientCommunicator.GetUptimeCalendarCompleted += new EventHandler<GetUptimeCalendarCompletedEventArgs>(clientCommunicator_GetUptimeCalendarCompleted);
+                clientCommunicator.SetUptimeCalendarCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(clientCommunicator_SetUptimeCalendarCompleted);
+            }
+            catch (Exception)
+            {
+                refreshTimer.Stop();
+                DialogResult res = MessageBox.Show("Connection Error, check if Hive Client is running!", "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                if (res == DialogResult.OK)
+                    this.Close();
+            }
+        }
+
+        #endregion
+
+        #region Logging
 
         private void InitLogFileReader()
@@ -129,4 +151,21 @@
             }
         }
+
+        private void AppendText(string message)
+        {
+            if (this.txtLog.InvokeRequired)
+            {
+                this.txtLog.Invoke(new
+                  AppendTextDelegate(AppendText), new object[] { message });
+            }
+            else
+            {
+                this.txtLog.AppendText(message);
+            }
+        }
+
+        #endregion
+
+        #region Gui Refresh
 
         private void InitTimer()
@@ -142,63 +181,13 @@
             try
             {
-                cccc.GetStatusInfosAsync();
+                clientCommunicator.GetStatusInfosAsync();
             }
             catch (Exception ex)
             {
                 refreshTimer.Stop();
-                DialogResult res = MessageBox.Show("Connection Error, check if Hive Client is running!", "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                DialogResult res = MessageBox.Show("Connection Error, check if Hive Client is running!" + ex.Message, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 if (res == DialogResult.OK)
                     this.Close();
             }
-        }
-
-        private void ConnectToClient()
-        {
-            try
-            {
-                //changed by MB, 16.04.09
-                //cccc = new ClientConsoleCommunicatorClient(new NetTcpBinding(), new EndpointAddress(ENDPOINTADRESS));
-                cccc = new ClientConsoleCommunicatorClient(WcfSettings.GetBinding(), new EndpointAddress(ENDPOINTADRESS));
-                cccc.GetStatusInfosCompleted += new EventHandler<GetStatusInfosCompletedEventArgs>(cccc_GetStatusInfosCompleted);
-                cccc.GetCurrentConnectionCompleted += new EventHandler<GetCurrentConnectionCompletedEventArgs>(cccc_GetCurrentConnectionCompleted);
-                cccc.GetUptimeCalendarCompleted += new EventHandler<GetUptimeCalendarCompletedEventArgs>(cccc_GetUptimeCalendarCompleted);
-                cccc.SetUptimeCalendarCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(cccc_SetUptimeCalendarCompleted);
-            }
-            catch (Exception)
-            {
-                refreshTimer.Stop();
-                DialogResult res = MessageBox.Show("Connection Error, check if Hive Client is running!", "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
-                if (res == DialogResult.OK)
-                    this.Close();
-            }
-        }
-
-        void cccc_SetUptimeCalendarCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
-        {
-            if (e.Error == null)
-            {
-                MessageBox.Show("Calendar successfully saved!", "Calender", MessageBoxButtons.OK, MessageBoxIcon.Information);
-            }
-            else
-            {
-                MessageBox.Show("Error saving calender \n" + e.Error.ToString(), "Calender", MessageBoxButtons.OK, MessageBoxIcon.Error);
-            }
-        }
-
-        void cccc_GetUptimeCalendarCompleted(object sender, GetUptimeCalendarCompletedEventArgs e)
-        {
-            if (e.Error == null)
-            {
-                if (e.Result != null)
-                {
-                    onlineTimes = e.Result.ToList<Appointment>();
-                    onlineTimes.ForEach(a => a.BorderColor = Color.Red);
-                }
-                else
-                {
-                    onlineTimes = new List<Appointment>();
-                }
-            }
-            //InitTestCalenderEntries();
         }
 
@@ -248,262 +237,26 @@
         }
 
+        #region Events
+
+        private void refreshTimer_Tick(object sender, EventArgs e)
+        {
+            RefreshGui();
+        }
+
+        #endregion
+
+
+        #endregion
+
+        #region Calendar stuff
+
         private void InitCalender()
         {
             dvOnline.StartDate = DateTime.Now;
-            dvOnline.OnNewAppointment += new EventHandler<NewAppointmentEventArgs>(DvOnline_OnNewAppointment);
-            dvOnline.OnResolveAppointments += new EventHandler<ResolveAppointmentsEventArgs>(DvOnline_OnResolveAppointments);
+            dvOnline.OnNewAppointment += new EventHandler<NewAppointmentEventArgs>(dvOnline_OnNewAppointment);
+            dvOnline.OnResolveAppointments += new EventHandler<ResolveAppointmentsEventArgs>(dvOnline_OnResolveAppointments);
 
             //get calender from client
-            cccc.GetUptimeCalendarAsync();
-        }
-
-        private Appointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay)
-        {
-            Appointment App = new Appointment();
-            App.StartDate = startDate;
-            App.EndDate = endDate;
-            App.AllDayEvent = allDay;
-            App.BorderColor = Color.Red;
-            App.Locked = true;
-            App.Subject = "Online";
-            App.Recurring = false;
-            return App;
-        }
-
-        private Appointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, bool recurring, Guid recurringId)
-        {
-            Appointment App = new Appointment();
-            App.StartDate = startDate;
-            App.EndDate = endDate;
-            App.AllDayEvent = allDay;
-            App.BorderColor = Color.Red;
-            App.Locked = true;
-            App.Subject = "Online";
-            App.Recurring = recurring;
-            App.RecurringId = recurringId;
-            return App;
-        }
-
-        private void DeleteAppointment()
-        {
-            onlineTimes.Remove(dvOnline.SelectedAppointment);
-        }
-
-        private void DeleteRecurringAppointment(Guid recurringId)
-        {
-            onlineTimes.RemoveAll(a => a.RecurringId.ToString() == dvOnline.SelectedAppointment.RecurringId.ToString());
-        }
-
-        #endregion
-
-        #region Events
-
-        private void refreshTimer_Tick(object sender, EventArgs e)
-        {
-            RefreshGui();
-        }
-
-        private void cccc_GetCurrentConnectionCompleted(object sender, GetCurrentConnectionCompletedEventArgs e)
-        {
-            if (e.Error == null)
-            {
-                ConnectionContainer curConnection = e.Result;
-                tbIPAdress.Text = curConnection.IPAdress;
-                tbPort.Text = curConnection.Port.ToString();
-            }
-            else
-            {
-                refreshTimer.Stop();
-                DialogResult res = MessageBox.Show("Connection Error, check if Hive Client is running! - " + e.Error.Message, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
-                if (res == DialogResult.OK)
-                    this.Close();
-            }
-        }
-
-        private void cccc_GetStatusInfosCompleted(object sender, GetStatusInfosCompletedEventArgs e)
-        {
-
-            if (e.Error == null)
-            {
-                StatusCommons sc = e.Result;
-
-                lbGuid.Text = sc.ClientGuid.ToString();
-                lbConnectionStatus.Text = sc.Status.ToString();
-                lbJobdone.Text = sc.JobsDone.ToString();
-                lbJobsAborted.Text = sc.JobsAborted.ToString();
-                lbJobsFetched.Text = sc.JobsFetched.ToString();
-
-                this.Text = "Client Console (" + sc.Status.ToString() + ")";
-
-                ListViewItem curJobStatusItem;
-
-                if (sc.Jobs != null)
-                {
-                    lvJobDetail.Items.Clear();
-                    double progress;
-                    foreach (JobStatus curJob in sc.Jobs)
-                    {
-                        curJobStatusItem = new ListViewItem(curJob.JobId.ToString());
-                        curJobStatusItem.SubItems.Add(curJob.Since.ToString());
-                        progress = curJob.Progress * 100;
-                        curJobStatusItem.SubItems.Add(progress.ToString());
-                        lvJobDetail.Items.Add(curJobStatusItem);
-                    }
-                    lvJobDetail.Sort();
-                }
-
-                UpdateGraph(sc.Jobs);
-
-                if (sc.Status == NetworkEnumWcfConnState.Connected || sc.Status == NetworkEnumWcfConnState.Loggedin)
-                {
-                    btConnect.Enabled = false;
-                    btnDisconnect.Enabled = true;
-                    lbCs.Text = sc.ConnectedSince.ToString();
-                    cccc.GetCurrentConnectionAsync();
-                }
-                else if (sc.Status == NetworkEnumWcfConnState.Disconnected)
-                {
-                    btConnect.Enabled = true;
-                    btnDisconnect.Enabled = false;
-                    lbCs.Text = String.Empty;
-                }
-                else if (sc.Status == NetworkEnumWcfConnState.Failed)
-                {
-                    btConnect.Enabled = true;
-                    btnDisconnect.Enabled = false;
-                    lbCs.Text = String.Empty;
-                }
-
-                cccc.GetCurrentConnection();
-            }
-            else
-            {
-                refreshTimer.Stop();
-                DialogResult res = MessageBox.Show("Connection Error, check if Hive Client is running! - " + e.Error.Message, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
-                if (res == DialogResult.OK)
-                    this.Close();
-            }
-        }
-
-        private void HiveClientConsole_Load(object sender, EventArgs e)
-        {
-            //nothing to do
-        }
-
-        private void AppendText(string message)
-        {
-            if (this.txtLog.InvokeRequired)
-            {
-                this.txtLog.Invoke(new
-                  AppendTextDelegate(AppendText), new object[] { message });
-            }
-            else
-            {
-                this.txtLog.AppendText(message);
-            }
-        }
-
-        private void btConnect_Click(object sender, EventArgs e)
-        {
-            IPAddress ipAdress;
-            int port;
-            ConnectionContainer cc = new ConnectionContainer();
-            if (IPAddress.TryParse(tbIPAdress.Text, out ipAdress) && int.TryParse(tbPort.Text, out port))
-            {
-                cc.IPAdress = tbIPAdress.Text;
-                cc.Port = port;
-                cccc.SetConnectionAsync(cc);
-            }
-            else
-            {
-                MessageBox.Show("IP Adress and/or Port Error", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
-            }
-        }
-
-        private void btnDisconnect_Click(object sender, EventArgs e)
-        {
-            cccc.DisconnectAsync();
-        }
-
-        private void btn_clientShutdown_Click(object sender, EventArgs e)
-        {
-            DialogResult res = MessageBox.Show("Do you really want to shutdown the Hive Client?", "Hive Client Console", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
-            if (res == DialogResult.Yes)
-            {
-                logFileReader.Stop();
-                cccc.ShutdownClient();
-                this.Close();
-            }
-        }
-
-        private void btbDelete_Click(object sender, EventArgs e)
-        {
-            Appointment selectedAppointment = dvOnline.SelectedAppointment;
-            if (dvOnline.SelectedAppointment != null)
-            {
-                if (!selectedAppointment.Recurring)
-                    DeleteAppointment();
-                else
-                {
-                    DialogResult res = MessageBox.Show("Delete all events in this series?", "Delete recurrences", MessageBoxButtons.YesNo);
-                    if (res != DialogResult.Yes)
-                        DeleteAppointment();
-                    else
-                        DeleteRecurringAppointment(selectedAppointment.RecurringId);
-                }
-            }
-            dvOnline.Invalidate();
-        }
-
-        private void chbade_CheckedChanged(object sender, EventArgs e)
-        {
-            txttimeFrom.Visible = !chbade.Checked;
-            txttimeTo.Visible = !chbade.Checked;
-        }
-
-        private void dvOnline_OnSelectionChanged(object sender, EventArgs e)
-        {
-            //btCreate.Enabled = true;
-            if (dvOnline.Selection == SelectionType.DateRange)
-            {
-                dtpFrom.Text = dvOnline.SelectionStart.ToShortDateString();
-                dtpTo.Text = dvOnline.SelectionEnd.Date.ToShortDateString();
-                txttimeFrom.Text = dvOnline.SelectionStart.ToShortTimeString();
-                txttimeTo.Text = dvOnline.SelectionEnd.ToShortTimeString();
-
-                btCreate.Text = "Save";
-            }
-
-            if (dvOnline.Selection == SelectionType.Appointment)
-            {
-
-                dtpFrom.Text = dvOnline.SelectedAppointment.StartDate.ToShortDateString();
-                dtpTo.Text = dvOnline.SelectedAppointment.EndDate.ToShortDateString();
-                txttimeFrom.Text = dvOnline.SelectedAppointment.StartDate.ToShortTimeString();
-                txttimeTo.Text = dvOnline.SelectedAppointment.EndDate.ToShortTimeString();
-
-                if (dvOnline.SelectedAppointment.Recurring)
-                    //btCreate.Enabled = false;
-                    //also change the caption of the save button
-                    btCreate.Text = "Save changes";
-            }
-
-            if (dvOnline.Selection == SelectionType.None)
-            {
-                //also change the caption of the save button
-                btCreate.Text = "Save";
-            }
-
-        }
-
-        private void Connection_KeyPress(object sender, KeyPressEventArgs e)
-        {
-            if (e.KeyChar == (char)Keys.Return)
-                btConnect_Click(null, null);
-        }
-
-        private void mcOnline_DateChanged(object sender, DateRangeEventArgs e)
-        {
-            dvOnline.StartDate = mcOnline.SelectionStart;
+            clientCommunicator.GetUptimeCalendarAsync();
         }
 
@@ -553,4 +306,140 @@
         }
 
+        private Appointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay)
+        {
+            Appointment App = new Appointment();
+            App.StartDate = startDate;
+            App.EndDate = endDate;
+            App.AllDayEvent = allDay;
+            App.BorderColor = Color.Red;
+            App.Locked = true;
+            App.Subject = "Online";
+            App.Recurring = false;
+            return App;
+        }
+
+        private Appointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, bool recurring, Guid recurringId)
+        {
+            Appointment App = new Appointment();
+            App.StartDate = startDate;
+            App.EndDate = endDate;
+            App.AllDayEvent = allDay;
+            App.BorderColor = Color.Red;
+            App.Locked = true;
+            App.Subject = "Online";
+            App.Recurring = recurring;
+            App.RecurringId = recurringId;
+            return App;
+        }
+
+        private void DeleteAppointment()
+        {
+            onlineTimes.Remove(dvOnline.SelectedAppointment);
+        }
+
+        private void DeleteRecurringAppointment(Guid recurringId)
+        {
+            onlineTimes.RemoveAll(a => a.RecurringId.ToString() == dvOnline.SelectedAppointment.RecurringId.ToString());
+        }
+
+        private void ChangeRecurrenceAppointment(Guid recurringId)
+        {
+            int hourfrom = int.Parse(txttimeFrom.Text.Substring(0, txttimeFrom.Text.IndexOf(':')));
+            int hourTo = int.Parse(txttimeTo.Text.Substring(0, txttimeTo.Text.IndexOf(':')));
+            List<Appointment> recurringAppointments = onlineTimes.Where(appointment => appointment.RecurringId == recurringId).ToList();
+            recurringAppointments.ForEach(appointment => appointment.StartDate = new DateTime(appointment.StartDate.Year, appointment.StartDate.Month, appointment.StartDate.Day, hourfrom, 0, 0));
+            recurringAppointments.ForEach(appointment => appointment.EndDate = new DateTime(appointment.EndDate.Year, appointment.EndDate.Month, appointment.EndDate.Day, hourTo, 0, 0));
+
+            DeleteRecurringAppointment(recurringId);
+            onlineTimes.AddRange(recurringAppointments);
+        }
+
+        public void DialogClosed(RecurrentEvent e)
+        {
+            CreateDailyRecurrenceAppointments(e.DateFrom, e.DateTo, e.AllDay, e.IncWeeks, e.WeekDays);
+        }
+
+        private void CreateDailyRecurrenceAppointments(DateTime dateFrom, DateTime dateTo, bool allDay, int incWeek, HashSet<DayOfWeek> daysOfWeek)
+        {
+            DateTime incDate = dateFrom;
+            Guid guid = Guid.NewGuid();
+
+            while (incDate.Date <= dateTo.Date)
+            {
+                if (daysOfWeek.Contains(incDate.Date.DayOfWeek))
+                    onlineTimes.Add(CreateAppointment(incDate, new DateTime(incDate.Year, incDate.Month, incDate.Day, dateTo.Hour, dateTo.Minute, 0), allDay, true, guid));
+                incDate = incDate.AddDays(1);
+            }
+
+            dvOnline.Invalidate();
+        }
+
+        #region Calendar Events
+
+        private void btbDelete_Click(object sender, EventArgs e)
+        {
+            Appointment selectedAppointment = dvOnline.SelectedAppointment;
+            if (dvOnline.SelectedAppointment != null)
+            {
+                if (!selectedAppointment.Recurring)
+                    DeleteAppointment();
+                else
+                {
+                    DialogResult res = MessageBox.Show("Delete all events in this series?", "Delete recurrences", MessageBoxButtons.YesNo);
+                    if (res != DialogResult.Yes)
+                        DeleteAppointment();
+                    else
+                        DeleteRecurringAppointment(selectedAppointment.RecurringId);
+                }
+            }
+            dvOnline.Invalidate();
+        }
+
+        private void chbade_CheckedChanged(object sender, EventArgs e)
+        {
+            txttimeFrom.Visible = !chbade.Checked;
+            txttimeTo.Visible = !chbade.Checked;
+        }
+
+        private void dvOnline_OnSelectionChanged(object sender, EventArgs e)
+        {
+            //btCreate.Enabled = true;
+            if (dvOnline.Selection == SelectionType.DateRange)
+            {
+                dtpFrom.Text = dvOnline.SelectionStart.ToShortDateString();
+                dtpTo.Text = dvOnline.SelectionEnd.Date.ToShortDateString();
+                txttimeFrom.Text = dvOnline.SelectionStart.ToShortTimeString();
+                txttimeTo.Text = dvOnline.SelectionEnd.ToShortTimeString();
+
+                btCreate.Text = "Save";
+            }
+
+            if (dvOnline.Selection == SelectionType.Appointment)
+            {
+
+                dtpFrom.Text = dvOnline.SelectedAppointment.StartDate.ToShortDateString();
+                dtpTo.Text = dvOnline.SelectedAppointment.EndDate.ToShortDateString();
+                txttimeFrom.Text = dvOnline.SelectedAppointment.StartDate.ToShortTimeString();
+                txttimeTo.Text = dvOnline.SelectedAppointment.EndDate.ToShortTimeString();
+
+                if (dvOnline.SelectedAppointment.Recurring)
+                    //btCreate.Enabled = false;
+                    //also change the caption of the save button
+                    btCreate.Text = "Save changes";
+            }
+
+            if (dvOnline.Selection == SelectionType.None)
+            {
+                //also change the caption of the save button
+                btCreate.Text = "Save";
+            }
+
+        }
+
+        private void mcOnline_DateChanged(object sender, DateRangeEventArgs e)
+        {
+            dvOnline.StartDate = mcOnline.SelectionStart;
+        }
+
         private void btCreate_Click(object sender, EventArgs e)
         {
@@ -584,17 +473,17 @@
         }
 
-        private void ChangeRecurrenceAppointment(Guid recurringId)
-        {
-            int hourfrom = int.Parse(txttimeFrom.Text.Substring(0, txttimeFrom.Text.IndexOf(':')));
-            int hourTo = int.Parse(txttimeTo.Text.Substring(0, txttimeTo.Text.IndexOf(':')));
-            List<Appointment> recurringAppointments = onlineTimes.Where(appointment => appointment.RecurringId == recurringId).ToList();
-            recurringAppointments.ForEach(appointment => appointment.StartDate = new DateTime(appointment.StartDate.Year, appointment.StartDate.Month, appointment.StartDate.Day, hourfrom, 0, 0));
-            recurringAppointments.ForEach(appointment => appointment.EndDate = new DateTime(appointment.EndDate.Year, appointment.EndDate.Month, appointment.EndDate.Day, hourTo, 0, 0));
-
-            DeleteRecurringAppointment(recurringId);
-            onlineTimes.AddRange(recurringAppointments);
-        }
-
-        private void DvOnline_OnResolveAppointments(object sender, ResolveAppointmentsEventArgs e)
+        private void btnRecurrence_Click(object sender, EventArgs e)
+        {
+            Recurrence recurrence = new Recurrence();
+            recurrence.dialogClosedDelegate = new OnDialogClosedDelegate(this.DialogClosed);
+            recurrence.Show();
+        }
+
+        private void btnSaveCal_Click(object sender, EventArgs e)
+        {
+            clientCommunicator.SetUptimeCalendarAsync(onlineTimes.ToArray());
+        }
+
+        private void dvOnline_OnResolveAppointments(object sender, ResolveAppointmentsEventArgs e)
         {
             List<Appointment> Apps = new List<Appointment>();
@@ -607,5 +496,5 @@
         }
 
-        private void DvOnline_OnNewAppointment(object sender, NewAppointmentEventArgs e)
+        private void dvOnline_OnNewAppointment(object sender, NewAppointmentEventArgs e)
         {
             Appointment Appointment = new Appointment();
@@ -617,34 +506,164 @@
         }
 
-        private void btnRecurrence_Click(object sender, EventArgs e)
-        {
-            Recurrence recurrence = new Recurrence();
-            recurrence.dialogClosedDelegate = new OnDialogClosedDelegate(this.DialogClosed);
-            recurrence.Show();
-        }
-
-        public void DialogClosed(RecurrentEvent e)
-        {
-            CreateDailyRecurrenceAppointments(e.DateFrom, e.DateTo, e.AllDay, e.IncWeeks, e.WeekDays);
-        }
-
-        private void CreateDailyRecurrenceAppointments(DateTime dateFrom, DateTime dateTo, bool allDay, int incWeek, HashSet<DayOfWeek> daysOfWeek)
-        {
-            DateTime incDate = dateFrom;
-            Guid guid = Guid.NewGuid();
-
-            while (incDate.Date <= dateTo.Date)
-            {
-                if (daysOfWeek.Contains(incDate.Date.DayOfWeek))
-                    onlineTimes.Add(CreateAppointment(incDate, new DateTime(incDate.Year, incDate.Month, incDate.Day, dateTo.Hour, dateTo.Minute, 0), allDay, true, guid));
-                incDate = incDate.AddDays(1);
-            }
-
-            dvOnline.Invalidate();
-        }
-
-        private void btnSaveCal_Click(object sender, EventArgs e)
-        {
-            cccc.SetUptimeCalendarAsync(onlineTimes.ToArray());
+        #endregion
+
+        #endregion
+
+        #region Client communicator events
+
+        void clientCommunicator_SetUptimeCalendarCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
+        {
+            if (e.Error == null)
+            {
+                MessageBox.Show("Calendar successfully saved!", "Calender", MessageBoxButtons.OK, MessageBoxIcon.Information);
+            }
+            else
+            {
+                MessageBox.Show("Error saving calender \n" + e.Error.ToString(), "Calender", MessageBoxButtons.OK, MessageBoxIcon.Error);
+            }
+        }
+
+        void clientCommunicator_GetUptimeCalendarCompleted(object sender, GetUptimeCalendarCompletedEventArgs e)
+        {
+            if (e.Error == null)
+            {
+                if (e.Result != null)
+                {
+                    onlineTimes = e.Result.ToList<Appointment>();
+                    onlineTimes.ForEach(a => a.BorderColor = Color.Red);
+                }
+                else
+                {
+                    onlineTimes = new List<Appointment>();
+                }
+            }
+            //InitTestCalenderEntries();
+        }
+
+        private void clientCommunicator_GetCurrentConnectionCompleted(object sender, GetCurrentConnectionCompletedEventArgs e)
+        {
+            if (e.Error == null)
+            {
+                ConnectionContainer curConnection = e.Result;
+                tbIPAdress.Text = curConnection.IPAdress;
+                tbPort.Text = curConnection.Port.ToString();
+            }
+            else
+            {
+                refreshTimer.Stop();
+                DialogResult res = MessageBox.Show("Connection Error, check if Hive Client is running! - " + e.Error.Message, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                if (res == DialogResult.OK)
+                    this.Close();
+            }
+        }
+
+        private void clientCommunicator_GetStatusInfosCompleted(object sender, GetStatusInfosCompletedEventArgs e)
+        {
+
+            if (e.Error == null)
+            {
+                StatusCommons sc = e.Result;
+
+                lbGuid.Text = sc.ClientGuid.ToString();
+                lbConnectionStatus.Text = sc.Status.ToString();
+                lbJobdone.Text = sc.JobsDone.ToString();
+                lbJobsAborted.Text = sc.JobsAborted.ToString();
+                lbJobsFetched.Text = sc.JobsFetched.ToString();
+
+                this.Text = "Client Console (" + sc.Status.ToString() + ")";
+
+                ListViewItem curJobStatusItem;
+
+                if (sc.Jobs != null)
+                {
+                    lvJobDetail.Items.Clear();
+                    double progress;
+                    foreach (JobStatus curJob in sc.Jobs)
+                    {
+                        curJobStatusItem = new ListViewItem(curJob.JobId.ToString());
+                        curJobStatusItem.SubItems.Add(curJob.Since.ToString());
+                        progress = curJob.Progress * 100;
+                        curJobStatusItem.SubItems.Add(progress.ToString());
+                        lvJobDetail.Items.Add(curJobStatusItem);
+                    }
+                    lvJobDetail.Sort();
+                }
+
+                UpdateGraph(sc.Jobs);
+
+                if (sc.Status == NetworkEnumWcfConnState.Connected || sc.Status == NetworkEnumWcfConnState.Loggedin)
+                {
+                    btConnect.Enabled = false;
+                    btnDisconnect.Enabled = true;
+                    lbCs.Text = sc.ConnectedSince.ToString();
+                    clientCommunicator.GetCurrentConnectionAsync();
+                }
+                else if (sc.Status == NetworkEnumWcfConnState.Disconnected)
+                {
+                    btConnect.Enabled = true;
+                    btnDisconnect.Enabled = false;
+                    lbCs.Text = String.Empty;
+                }
+                else if (sc.Status == NetworkEnumWcfConnState.Failed)
+                {
+                    btConnect.Enabled = true;
+                    btnDisconnect.Enabled = false;
+                    lbCs.Text = String.Empty;
+                }
+
+                clientCommunicator.GetCurrentConnection();
+            }
+            else
+            {
+                refreshTimer.Stop();
+                DialogResult res = MessageBox.Show("Connection Error, check if Hive Client is running! - " + e.Error.Message, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                if (res == DialogResult.OK)
+                    this.Close();
+            }
+        }
+
+        #endregion
+
+        #endregion
+
+        #region GUI Events
+
+        private void btConnect_Click(object sender, EventArgs e)
+        {
+            IPAddress ipAdress;
+            int port;
+            ConnectionContainer cc = new ConnectionContainer();
+            if (IPAddress.TryParse(tbIPAdress.Text, out ipAdress) && int.TryParse(tbPort.Text, out port))
+            {
+                cc.IPAdress = tbIPAdress.Text;
+                cc.Port = port;
+                clientCommunicator.SetConnectionAsync(cc);
+            }
+            else
+            {
+                MessageBox.Show("IP Adress and/or Port Error", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+            }
+        }
+
+        private void btnDisconnect_Click(object sender, EventArgs e)
+        {
+            clientCommunicator.DisconnectAsync();
+        }
+
+        private void btn_clientShutdown_Click(object sender, EventArgs e)
+        {
+            DialogResult res = MessageBox.Show("Do you really want to shutdown the Hive Client?", "Hive Client Console", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
+            if (res == DialogResult.Yes)
+            {
+                logFileReader.Stop();
+                clientCommunicator.ShutdownClient();
+                this.Close();
+            }
+        }
+
+        private void Connection_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            if (e.KeyChar == (char)Keys.Return)
+                btConnect_Click(null, null);
         }
 
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.resx
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.resx	(revision 2061)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.resx	(revision 2062)
@@ -127,44 +127,44 @@
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABS
         CgAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
-        AwABEAMAAQEBAAEgBgABECoAAUMCAQF0AWYCCQHxAygB/wFiAgMB1AEgAgEBLCwAAUMCAQF0AWYCCQHx
-        AygB/wFiAgMB1AEgAgEBLKQAAWACCgHyAZMBgQEoAf8BvwGBASgB/wG9AYEBKAH/AboBgQEoAf8BuAGB
-        ASgB/wG2AYEBKAH/AVwBRQEoAf8BPQIBAWUcAAFgAgoB8gIoAaQB/wIoAdYB/wIoAdQB/wIoAdIB/wIo
-        AdAB/wIoAc4B/wIoAWMB/wE9AgEBZZgAATIBLgEoAf8BxwGBASgB/wHDAYEBKAH/AbEBgQEoAf8BsQGB
-        ASgB/wGxAYEBKAH/AbEBgQEoAf8BswGBASgB/wG2AYEBKAH/AbQBgQEoAf8BZAIFAeQUAAIoATMB/wIo
-        AdwB/wIoAdkB/wIoAcoB/wIoAcoB/wIoAcoB/wIoAcoB/wIoAcsB/wIoAc4B/wIoAcwB/wFkAgUB5JAA
-        AygB/wHLAYEBKAH/AbsBgQEoAf8BtgGBASgB/wG2AYEBKAH/Ae4B3AHEBf8BvgGBAUUB/wG2AYEBKAH/
-        AbYBgQEoAf8BtgGBASgB/wG0AYEBKAH/AUkCAgGGDAADKAH/AigB4AH/AigB0gH/AigBzgH/AlUB1gH/
-        AigBzgH/AigBzgH/AigBzgH/AisBzgH/AigBzgH/AigBzgH/AigBzAH/AUkCAgGGiAABLAIBAUIB0AGG
-        ASgB/wHHAYEBKAH/AboBgQEoAf8BugGBASgB/wG6AYEBKAH/AdABnAF5Bf8BugGBASgB/wG6AYEBKAH/
-        AboBgQEoAf8BugGBASgB/wG2AYEBKAH/AXwBVwEoAf8IAAEsAgEBQgIoAeQB/wIoAdwB/wIoAdIB/wKf
-        Ae0F/wJuAd4B/wIoAdIB/wL0Af0F/wIrAdIB/wIoAdIB/wIoAc4B/wIoAYEB/4gAAygB/wHSAYkBKAH/
-        Ab8BgQEoAf8BvwGBASgB/wG/AYEBKAH/Ab8BgQEoAf8B0wGfAXkF/wG/AYEBKAH/Ab8BgQEoAf8BvwGB
-        ASgB/wG/AYEBKAH/Ab4BgQEoAf8BtgGBASgB/wE2AgEBVwQAAygB/wIoAeUB/wIoAdYB/wIoAdYN/wL1
-        Af0J/wLiAfoB/wIoAdYB/wIoAdUB/wIoAc4B/wE2AgEBV4QAAXABWAEoAf8B1AGMASgB/wHEAYEBKAH/
-        AcQBgQEoAf8BxAGBASgB/wHEAYEBKAH/AdcBpAF6Bf8BxAGBASgB/wHEAYEBKAH/AcQBgQEoAf8BxAGB
-        ASgB/wHEAYEBKAH/AbgBgQEoAf8BZQIHAewEAAIoAXYB/wIoAegB/wIoAdoB/wIoAdoB/wIoAdoR/wLi
-        AfoB/wIoAdoB/wIoAdoB/wIoAdoB/wIoAdAB/wFlAgcB7IQAAYEBbQEoAf8B1wGOASgB/wHJAYEBKAH/
-        AckBgQEoAf8ByQGBASgB/wHJAYEBKAn/AckBgQEoAf8ByQGBASgB/wHJAYEBKAH/AckBgQEoAf8ByQGB
-        ASgB/wG6AYEBKAH/AygB/wQAAigBgQH/AigB6QH/AigB3gH/AigB3gH/AigB3gH/AvQB/Q3/Am4B5wH/
-        AigB3gH/AigB3gH/AigB3gH/AigB0gH/AygB/4QAAYABXgEoAf8B2QGRASgB/wHOAYMBKAH/Ac4BgwEo
-        Af8BzgGDASgB/wHOAYMBKAH/Ac4BgwEoAf8B1wGcAVkB/wHOAYMBKAH/Ac4BgwEoAf8BzgGDASgB/wHO
-        AYMBKAH/Ac4BgwEoAf8BvQGBASgB/wFaAhMB+QQAASgBLQF/Af8CKAHsAf8CKAHiAf8CKAHiAf8C9AH9
-        Ff8CbgHqAf8CKAHiAf8CKAHiAf8CKAHUAf8BWgITAfmEAAErASkBKAH/AdsBlAEoAf8B0gGJASgB/wHS
-        AYkBKAH/AdIBiQEoAf8B0gGJASgB/wHSAYkBKAH/AesBywGQAf8B0gGJASgB/wHSAYkBKAH/AdIBiQEo
-        Af8B0gGJASgB/wHEAYEBKAH/Ab8BgQEoAf8BUQICAZsEAAIoASsB/wIoAe0B/wIoAeYB/wIoAeUB/wL9
-        Af4F/wLiAfwB/wIoAeUJ/wKBAfEB/wIoAeUB/wIoAdoB/wIoAdYB/wFRAgIBm4QAAVgCAgGyAd4BmAEo
-        Af8B2wGUASgB/wHXAY4BKAH/AdcBjgEoAf8B1wGOASgB/wH7AfYB6wX/AdcBjgEoAf8B1wGOASgB/wHX
-        AY4BKAH/AdYBjQEoAf8BxAGBASgB/wGpAYEBKAH/CAABWAICAbIBKAEyAe8B/wIoAe0B/wIoAekB/wIo
-        AekB/wLhAfwB/wIoAekB/wIoAekB/wIoAekB/wKBAfMB/wIoAekB/wIoAegB/wIoAdoB/wEoATABnQH/
-        jAABYgFHASgB/wHdAZcBKAH/AdsBlAEoAf8B2wGUASgB/wHbAZQBKAH/AdsBlAEoAf8B3AGXAS4B/wHb
-        AZQBKAH/AdsBlAEoAf8B1QGMASgB/wHJAYEBKAH/AdEBiAEoAf8BLAIhAfwMAAIoAVwB/wIoAe8B/wIo
-        Ae0B/wIoAe0B/wIoAe0B/wIoAe0B/wIoAe0B/wIoAe0B/wIoAe0B/wIoAegB/wIoAd4B/wEoATsB4gH/
-        ASwCIQH8jAABGQIBASEBkAF8ASgB/wHfAZkBKAH/AdsBlAEoAf8B2QGRASgB/wHYAZABKAH/AdgBkAEo
-        Af8B0wGKASgB/wHQAYYBKAH/Ac4BgwEoAf8B2gGSASgB/wEzAS4BKAH/EAABGQIBASECKAGHAf8BKAEu
-        AfEB/wIoAe0B/wIoAewB/wIoAesB/wIoAesB/wIoAeYB/wIoAeQB/wIoAeIB/wEoAUUB5gH/AigBMgH/
-        lAABEgIBARYBTQE/ASgB/wHSAYkBKAH/AeIBnQEoAf8B2QGRASgB/wHXAY4BKAH/AdUBjAEoAf8B4QGb
-        ASgB/wHOAYQBKAH/AUgCKAH+GAABEgIBARYCKAFMAf8BKAEuAdMB/wEoAT8B9AH/AigB7AH/AigB6QH/
-        ASgBKQHoAf8BKAFHAfAB/wIoAcwB/wFIAigB/qAAAUYCAQF9AygB/wF5AWABKAH/AYEBeQEoAf8BWgFL
-        ASgB/wFIAigB/gEUAgEBGiQAAUYCAQF9AygB/wIoAXwB/wIoAYEB/wIoAVwB/wFIAigB/gEUAgEBGv8A
+        AwABEAMAAQEBAAEgBgABECoAAUMCAQF0AWYCCQHxAykB/wFiAgMB1AEgAgEBLCwAAUMCAQF0AWYCCQHx
+        AykB/wFiAgMB1AEgAgEBLKQAAWACCgHyAZMBgQEpAf8BvwGBASkB/wG9AYEBKQH/AboBgQEpAf8BuAGB
+        ASkB/wG2AYEBKQH/AV0BRgEpAf8BPQIBAWUcAAFgAgoB8gIpAaQB/wIpAdYB/wIpAdQB/wIpAdIB/wIp
+        AdAB/wIpAc4B/wIpAWQB/wE9AgEBZZgAATMBLwEpAf8BxwGBASkB/wHDAYEBKQH/AbEBgQEpAf8BsQGB
+        ASkB/wGxAYEBKQH/AbEBgQEpAf8BswGBASkB/wG2AYEBKQH/AbQBgQEpAf8BZAIFAeQUAAIpATQB/wIp
+        AdwB/wIpAdkB/wIpAcoB/wIpAcoB/wIpAcoB/wIpAcoB/wIpAcsB/wIpAc4B/wIpAcwB/wFkAgUB5JAA
+        AykB/wHLAYEBKQH/AbsBgQEpAf8BtgGBASkB/wG2AYEBKQH/Ae4B3AHEBf8BvgGBAUYB/wG2AYEBKQH/
+        AbYBgQEpAf8BtgGBASkB/wG0AYEBKQH/AUkCAgGGDAADKQH/AikB4AH/AikB0gH/AikBzgH/AlYB1gH/
+        AikBzgH/AikBzgH/AikBzgH/AiwBzgH/AikBzgH/AikBzgH/AikBzAH/AUkCAgGGiAABLAIBAUIB0AGG
+        ASkB/wHHAYEBKQH/AboBgQEpAf8BugGBASkB/wG6AYEBKQH/AdABnAF6Bf8BugGBASkB/wG6AYEBKQH/
+        AboBgQEpAf8BugGBASkB/wG2AYEBKQH/AX0BWAEpAf8IAAEsAgEBQgIpAeQB/wIpAdwB/wIpAdIB/wKf
+        Ae0F/wJvAd4B/wIpAdIB/wL0Af0F/wIsAdIB/wIpAdIB/wIpAc4B/wIpAYEB/4gAAykB/wHSAYkBKQH/
+        Ab8BgQEpAf8BvwGBASkB/wG/AYEBKQH/Ab8BgQEpAf8B0wGfAXoF/wG/AYEBKQH/Ab8BgQEpAf8BvwGB
+        ASkB/wG/AYEBKQH/Ab4BgQEpAf8BtgGBASkB/wE2AgEBVwQAAykB/wIpAeUB/wIpAdYB/wIpAdYN/wL1
+        Af0J/wLiAfoB/wIpAdYB/wIpAdUB/wIpAc4B/wE2AgEBV4QAAXEBWQEpAf8B1AGMASkB/wHEAYEBKQH/
+        AcQBgQEpAf8BxAGBASkB/wHEAYEBKQH/AdcBpAF7Bf8BxAGBASkB/wHEAYEBKQH/AcQBgQEpAf8BxAGB
+        ASkB/wHEAYEBKQH/AbgBgQEpAf8BZQIHAewEAAIpAXcB/wIpAegB/wIpAdoB/wIpAdoB/wIpAdoR/wLi
+        AfoB/wIpAdoB/wIpAdoB/wIpAdoB/wIpAdAB/wFlAgcB7IQAAYEBbgEpAf8B1wGOASkB/wHJAYEBKQH/
+        AckBgQEpAf8ByQGBASkB/wHJAYEBKQn/AckBgQEpAf8ByQGBASkB/wHJAYEBKQH/AckBgQEpAf8ByQGB
+        ASkB/wG6AYEBKQH/AykB/wQAAikBgQH/AikB6QH/AikB3gH/AikB3gH/AikB3gH/AvQB/Q3/Am8B5wH/
+        AikB3gH/AikB3gH/AikB3gH/AikB0gH/AykB/4QAAYEBXwEpAf8B2QGRASkB/wHOAYMBKQH/Ac4BgwEp
+        Af8BzgGDASkB/wHOAYMBKQH/Ac4BgwEpAf8B1wGcAVoB/wHOAYMBKQH/Ac4BgwEpAf8BzgGDASkB/wHO
+        AYMBKQH/Ac4BgwEpAf8BvQGBASkB/wFbAhMB+QQAASkBLgGAAf8CKQHsAf8CKQHiAf8CKQHiAf8C9AH9
+        Ff8CbwHqAf8CKQHiAf8CKQHiAf8CKQHUAf8BWwITAfmEAAEsASoBKQH/AdsBlAEpAf8B0gGJASkB/wHS
+        AYkBKQH/AdIBiQEpAf8B0gGJASkB/wHSAYkBKQH/AesBywGQAf8B0gGJASkB/wHSAYkBKQH/AdIBiQEp
+        Af8B0gGJASkB/wHEAYEBKQH/Ab8BgQEpAf8BUQICAZsEAAIpASwB/wIpAe0B/wIpAeYB/wIpAeUB/wL9
+        Af4F/wLiAfwB/wIpAeUJ/wKBAfEB/wIpAeUB/wIpAdoB/wIpAdYB/wFRAgIBm4QAAVgCAgGyAd4BmAEp
+        Af8B2wGUASkB/wHXAY4BKQH/AdcBjgEpAf8B1wGOASkB/wH7AfYB6wX/AdcBjgEpAf8B1wGOASkB/wHX
+        AY4BKQH/AdYBjQEpAf8BxAGBASkB/wGpAYEBKQH/CAABWAICAbIBKQEzAe8B/wIpAe0B/wIpAekB/wIp
+        AekB/wLhAfwB/wIpAekB/wIpAekB/wIpAekB/wKBAfMB/wIpAekB/wIpAegB/wIpAdoB/wEpATEBnQH/
+        jAABYwFIASkB/wHdAZcBKQH/AdsBlAEpAf8B2wGUASkB/wHbAZQBKQH/AdsBlAEpAf8B3AGXAS8B/wHb
+        AZQBKQH/AdsBlAEpAf8B1QGMASkB/wHJAYEBKQH/AdEBiAEpAf8BLAIhAfwMAAIpAV0B/wIpAe8B/wIp
+        Ae0B/wIpAe0B/wIpAe0B/wIpAe0B/wIpAe0B/wIpAe0B/wIpAe0B/wIpAegB/wIpAd4B/wEpATwB4gH/
+        ASwCIQH8jAABGQIBASEBkAF9ASkB/wHfAZkBKQH/AdsBlAEpAf8B2QGRASkB/wHYAZABKQH/AdgBkAEp
+        Af8B0wGKASkB/wHQAYYBKQH/Ac4BgwEpAf8B2gGSASkB/wE0AS8BKQH/EAABGQIBASECKQGHAf8BKQEv
+        AfEB/wIpAe0B/wIpAewB/wIpAesB/wIpAesB/wIpAeYB/wIpAeQB/wIpAeIB/wEpAUYB5gH/AikBMwH/
+        lAABEgIBARYBTgFAASkB/wHSAYkBKQH/AeIBnQEpAf8B2QGRASkB/wHXAY4BKQH/AdUBjAEpAf8B4QGb
+        ASkB/wHOAYQBKQH/AUkCKQH+GAABEgIBARYCKQFNAf8BKQEvAdMB/wEpAUAB9AH/AikB7AH/AikB6QH/
+        ASkBKgHoAf8BKQFIAfAB/wIpAcwB/wFJAikB/qAAAUYCAQF9AykB/wF6AWEBKQH/AYEBegEpAf8BWwFM
+        ASkB/wFJAikB/gEUAgEBGiQAAUYCAQF9AykB/wIpAX0B/wIpAYEB/wIpAV0B/wFJAikB/gEUAgEBGv8A
         kQABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAfwBHwH8AR8EAAHwAQcB8AEH
         BAAB4AEDAeABAwQAAcABAQHAAQEEAAGAAQEBgAEBBAABgAEAAYAFAAGAAQABgAUAAYABAAGABQABgAEA
Index: unk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveEventEntry.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveEventEntry.cs	(revision 2061)
+++ 	(revision )
@@ -1,18 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace HeuristicLab.Hive.Client.Console {
-  public class HiveEventEntry {
-    public string Message { get; private set; }
-    public string EventDate { get; private set; }
-    public string ID { get; private set; }
-
-    public HiveEventEntry(string message, string eventDate, string id) {
-      Message = message;
-      EventDate = eventDate;
-      ID = id;
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Hive.Client.Console/3.2/ListViewColumnSorterDate.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/ListViewColumnSorterDate.cs	(revision 2061)
+++ 	(revision )
@@ -1,99 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-using System.Collections;
-
-
-namespace HeuristicLab.Hive.Client.Console {
-  public class ListViewColumnSorterDate : IComparer {
-
-    /// <summary>
-    /// Specifies the column to be sorted
-    /// </summary>
-    private int ColumnToSort;
-    /// <summary>
-    /// Specifies the order in which to sort (i.e. 'Ascending').
-    /// </summary>
-    private SortOrder OrderOfSort;
-    /// <summary>
-    /// Case insensitive comparer object
-    /// </summary>
-    private CaseInsensitiveComparer ObjectCompare;
-
-    /// <summary>
-    /// Class constructor.  Initializes various elements
-    /// </summary>
-    public ListViewColumnSorterDate() {
-      // Initialize the column to '0'
-      ColumnToSort = 0;
-
-      // Initialize the sort order to 'none'
-      OrderOfSort = SortOrder.None;
-
-      // Initialize the CaseInsensitiveComparer object
-      ObjectCompare = new CaseInsensitiveComparer();
-    }
-
-    /// <summary>
-    /// This method is inherited from the IComparer interface.  It compares the two objects passed using a case insensitive comparison.
-    /// </summary>
-    /// <param name="x">First object to be compared</param>
-    /// <param name="y">Second object to be compared</param>
-    /// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>
-    public int Compare(object x, object y) {
-      int compareResult = 0;
-      ListViewItem listviewX, listviewY;
-
-      // Cast the objects to be compared to ListViewItem objects
-      listviewX = (ListViewItem)x;
-      listviewY = (ListViewItem)y;
-
-      DateTime listviewDateX = new DateTime();
-      DateTime listviewDateY = new DateTime();
-
-      if (DateTime.TryParse(listviewX.SubItems[ColumnToSort].Text, out listviewDateX) && DateTime.TryParse(listviewY.SubItems[ColumnToSort].Text, out listviewDateY)) {
-        compareResult = DateTime.Compare(listviewDateX, listviewDateY);
-      } else {
-        // Compare the two items
-        compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
-      }
-      // Calculate correct return value based on object comparison
-      if (OrderOfSort == SortOrder.Ascending) {
-        // Ascending sort is selected, return normal result of compare operation
-        return compareResult;
-      } else if (OrderOfSort == SortOrder.Descending) {
-        // Descending sort is selected, return negative result of compare operation
-        return (-compareResult);
-      } else {
-        // Return '0' to indicate they are equal
-        return 0;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0').
-    /// </summary>
-    public int SortColumn {
-      set {
-        ColumnToSort = value;
-      }
-      get {
-        return ColumnToSort;
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending').
-    /// </summary>
-    public SortOrder Order {
-      set {
-        OrderOfSort = value;
-      }
-      get {
-        return OrderOfSort;
-      }
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/LogFileReader.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/LogFileReader.cs	(revision 2061)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/LogFileReader.cs	(revision 2062)
@@ -1,7 +1,29 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.IO;
+using System.Diagnostics;
 
 namespace HeuristicLab.Hive.Client.Console {
@@ -54,6 +76,13 @@
 
     public void StartMonitoring() {
-      fileSystemWatcher.Changed += new FileSystemEventHandler(TargetFile_Changed);
+        fileSystemWatcher.Changed += new FileSystemEventHandler(TargetFile_Changed);
+      fileSystemWatcher.Renamed += new RenamedEventHandler(TargetFile_Renamed);
       fileSystemWatcher.EnableRaisingEvents = true;
+    }
+
+    public void TargetFile_Renamed(object source, FileSystemEventArgs e)
+    {
+        Stop();
+        Start();
     }
 
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/Recurrence.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/Recurrence.cs	(revision 2061)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/Recurrence.cs	(revision 2062)
@@ -1,3 +1,24 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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;
 using System.Collections.Generic;
 using System.Windows.Forms;
Index: /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/RecurrentEvent.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/RecurrentEvent.cs	(revision 2061)
+++ /trunk/sources/HeuristicLab.Hive.Client.Console/3.2/RecurrentEvent.cs	(revision 2062)
@@ -1,3 +1,24 @@
-﻿using System;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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;
 using System.Collections.Generic;
 
Index: /trunk/sources/HeuristicLab.Tracing/3.2/HeuristicLab.Hive.log4net.xml
===================================================================
--- /trunk/sources/HeuristicLab.Tracing/3.2/HeuristicLab.Hive.log4net.xml	(revision 2061)
+++ /trunk/sources/HeuristicLab.Tracing/3.2/HeuristicLab.Hive.log4net.xml	(revision 2062)
@@ -6,5 +6,5 @@
     <rollingStyle value="Size" />
     <maxSizeRollBackups value="10" />
-    <maximumFileSize value="100KB" />
+    <maximumFileSize value="10KB" />
     <staticLogFileName value="true" />
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
