Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveItem.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveItem.cs	(revision 5795)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveItem.cs	(revision 5826)
@@ -62,6 +62,11 @@
 
     public void Open() {
-      pipeFactory = new DuplexChannelFactory<ISlaveCommunication>(this, "SlaveCommunicationServiceEndpoint");
-      RegisterEvents();
+      try {
+        pipeFactory = new DuplexChannelFactory<ISlaveCommunication>(this, "SlaveCommunicationServiceEndpoint");
+        RegisterEvents();
+      }
+      catch (Exception ex) {
+        OnMessageLogged("Error establishing connection to Core. Are you missing a configuration file?\n" + ex.ToString());
+      }
     }
 
@@ -72,6 +77,6 @@
         return true;
       }
-      catch (Exception e) {
-        OnMessageLogged("Couldn't connect to Slave core. Is it possible that the Slave Core isn't running?\nException is: " + e.ToString());
+      catch (Exception) {
+        OnMessageLogged("Couldn't connect to Slave core. Is it possible that the Slave Core isn't running?\n");
         return false;
       }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.Designer.cs	(revision 5795)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.Designer.cs	(revision 5826)
@@ -55,4 +55,5 @@
       this.btnAbout = new System.Windows.Forms.Button();
       this.jobChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
+      this.btnRestartService = new System.Windows.Forms.Button();
       ((System.ComponentModel.ISupportInitialize)(this.jobChart)).BeginInit();
       this.SuspendLayout();
@@ -61,10 +62,10 @@
       // 
       this.txtLog.BackColor = System.Drawing.Color.White;
-      this.txtLog.Location = new System.Drawing.Point(3, 150);
+      this.txtLog.Location = new System.Drawing.Point(3, 184);
       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(584, 273);
+      this.txtLog.Size = new System.Drawing.Size(584, 239);
       this.txtLog.TabIndex = 1;
       // 
@@ -111,5 +112,5 @@
       // btnAbout
       // 
-      this.btnAbout.Location = new System.Drawing.Point(476, 119);
+      this.btnAbout.Location = new System.Drawing.Point(476, 149);
       this.btnAbout.Name = "btnAbout";
       this.btnAbout.Size = new System.Drawing.Size(111, 28);
@@ -132,6 +133,16 @@
       series1.Name = "Series1";
       this.jobChart.Series.Add(series1);
-      this.jobChart.Size = new System.Drawing.Size(272, 138);
+      this.jobChart.Size = new System.Drawing.Size(293, 174);
       this.jobChart.TabIndex = 7;
+      // 
+      // btnRestartService
+      // 
+      this.btnRestartService.Location = new System.Drawing.Point(476, 119);
+      this.btnRestartService.Name = "btnRestartService";
+      this.btnRestartService.Size = new System.Drawing.Size(111, 28);
+      this.btnRestartService.TabIndex = 8;
+      this.btnRestartService.Text = "RestartService";
+      this.btnRestartService.UseVisualStyleBackColor = true;
+      this.btnRestartService.Click += new System.EventHandler(this.btnRestartService_Click);
       // 
       // SlaveView
@@ -139,4 +150,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.btnRestartService);
       this.Controls.Add(this.jobChart);
       this.Controls.Add(this.btnAbout);
@@ -163,4 +175,5 @@
     private System.Windows.Forms.Button btnAbout;
     private System.Windows.Forms.DataVisualization.Charting.Chart jobChart;
+    private System.Windows.Forms.Button btnRestartService;
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.cs	(revision 5795)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.4/SlaveView.cs	(revision 5826)
@@ -21,4 +21,6 @@
 
 using System;
+using System.Security.Principal;
+using System.ServiceProcess;
 using System.Threading;
 using System.Threading.Tasks;
@@ -47,4 +49,9 @@
     public SlaveView() {
       InitializeComponent();
+
+      if (!CheckRunAsAdmin())
+        btnRestartService.Enabled = false;
+      btnRestart.Enabled = false;
+
     }
 
@@ -99,5 +106,4 @@
     #region Event Handlers
     void Content_SlaveStatusChanged(object sender, EventArgs<StatusCommons> e) {
-      txtLog.AppendText("got a status changed object from slave\n");
       RenderChart(e.Value);
     }
@@ -114,4 +120,5 @@
 
     private void RenderChart(StatusCommons status) {
+      jobChart.Series[0].Points.Clear();
 
       DataPoint pJobs = new DataPoint(status.Jobs.Count, status.Jobs.Count);
@@ -120,4 +127,13 @@
       DataPoint pJobsFetched = new DataPoint(status.JobsFetched, status.JobsFetched);
 
+      pJobs.LegendText = "Current jobs: " + status.Jobs.Count;
+      pJobs.Color = System.Drawing.Color.Orange;
+      pJobsAborted.LegendText = "Aborted jobs: " + status.JobsAborted;
+      pJobsAborted.Color = System.Drawing.Color.Red;
+      pJobsDone.LegendText = "Finished jobs: " + status.JobsDone;
+      pJobsDone.Color = System.Drawing.Color.Green;
+      pJobsFetched.LegendText = "Fetched jobs: " + status.JobsFetched;
+      pJobsFetched.Color = System.Drawing.Color.Blue;
+
       jobChart.Series[0].Points.Add(pJobs);
       jobChart.Series[0].Points.Add(pJobsAborted);
@@ -137,11 +153,17 @@
 
     private void btnRestart_Click(object sender, System.EventArgs e) {
-      if (Content != null)
+      if (Content != null) {
         Content.RestartCore();
+        btnRestart.Enabled = false;
+        btnSleep.Enabled = true;
+      }
     }
 
     private void btnSleep_Click(object sender, System.EventArgs e) {
-      if (Content != null)
+      if (Content != null) {
         Content.Sleep();
+        btnRestart.Enabled = true;
+        btnSleep.Enabled = false;
+      }
     }
 
@@ -150,4 +172,46 @@
       diag.ShowDialog();
     }
+
+    private void btnRestartService_Click(object sender, EventArgs e) {
+      if (CheckRunAsAdmin()) {
+        RestartService();
+      } else {
+        MessageBox.Show("You need to run this application as Administrator to restart the service");
+      }
+    }
+
+    private bool CheckRunAsAdmin() {
+      bool isRunAsAdmin = false;
+      WindowsIdentity user = WindowsIdentity.GetCurrent();
+      WindowsPrincipal principal = new WindowsPrincipal(user);
+
+      try {
+        isRunAsAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
+      }
+      catch { }
+      return isRunAsAdmin;
+    }
+
+    private void RestartService() {
+      string serviceName = "HeuristicLab.Clients.Hive.SlaveCore.SlaveWindowsService";
+      TimeSpan timeout = TimeSpan.FromMilliseconds(5000);
+
+      ServiceController service = new ServiceController(serviceName);
+      try {
+        if (service.Status == ServiceControllerStatus.Running) {
+          service.Stop();
+          service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
+        }
+
+        service.Start();
+        service.WaitForStatus(ServiceControllerStatus.Running, timeout);
+      }
+      catch (InvalidOperationException ex) {
+        MessageBox.Show("Error starting service: Hive Slave Service not found!\n" + ex.ToString());
+      }
+      catch (Exception ex) {
+        MessageBox.Show("Error starting service, exception is: \n" + ex.ToString());
+      }
+    }
   }
 }
