Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/HeuristicLab.Clients.Hive.Administrator-3.3.csproj
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/HeuristicLab.Clients.Hive.Administrator-3.3.csproj	(revision 8952)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/HeuristicLab.Clients.Hive.Administrator-3.3.csproj	(revision 8953)
@@ -104,4 +104,16 @@
   <ItemGroup>
     <Compile Include="HiveRoles.cs" />
+    <Compile Include="Views\AppointmentTypeDialog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Views\AppointmentTypeDialog.Designer.cs">
+      <DependentUpon>AppointmentTypeDialog.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Views\AppointmentTypeView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\AppointmentTypeView.Designer.cs">
+      <DependentUpon>AppointmentTypeView.cs</DependentUpon>
+    </Compile>
     <Compile Include="Views\HiveAdministratorView.cs">
       <SubType>UserControl</SubType>
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/RecurrentEvent.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/RecurrentEvent.cs	(revision 8952)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/RecurrentEvent.cs	(revision 8953)
@@ -27,6 +27,7 @@
     public DateTime DateFrom { get; set; }
     public DateTime DateTo { get; set; }
-    public bool AllDay { get; set; }    
+    public bool AllDay { get; set; }
     public HashSet<DayOfWeek> WeekDays { get; set; }
+    public DowntimeType AppointmentType { get; set; }
   }
 }
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeDialog.Designer.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeDialog.Designer.cs	(revision 8953)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeDialog.Designer.cs	(revision 8953)
@@ -0,0 +1,91 @@
+﻿namespace HeuristicLab.Clients.Hive.Administrator.Views {
+  partial class AppointmentTypeDialog {
+    /// <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.okButton = new System.Windows.Forms.Button();
+      this.cancleButton = new System.Windows.Forms.Button();
+      this.appointmentTypeView = new HeuristicLab.Clients.Hive.Administrator.Views.AppointmentTypeView();
+      this.SuspendLayout();
+      // 
+      // okButton
+      // 
+      this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+      this.okButton.Location = new System.Drawing.Point(12, 75);
+      this.okButton.Name = "okButton";
+      this.okButton.Size = new System.Drawing.Size(75, 23);
+      this.okButton.TabIndex = 0;
+      this.okButton.Text = "OK";
+      this.okButton.UseVisualStyleBackColor = true;
+      this.okButton.Click += new System.EventHandler(this.okButton_Click);
+      // 
+      // cancleButton
+      // 
+      this.cancleButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+      this.cancleButton.Location = new System.Drawing.Point(127, 75);
+      this.cancleButton.Name = "cancleButton";
+      this.cancleButton.Size = new System.Drawing.Size(75, 23);
+      this.cancleButton.TabIndex = 1;
+      this.cancleButton.Text = "Cancel";
+      this.cancleButton.UseVisualStyleBackColor = true;
+      this.cancleButton.Click += new System.EventHandler(this.cancleButton_Click);
+      // 
+      // appointmentTypeView
+      // 
+      this.appointmentTypeView.AppointmentType = HeuristicLab.Clients.Hive.DowntimeType.Offline;
+      this.appointmentTypeView.Location = new System.Drawing.Point(12, 12);
+      this.appointmentTypeView.Name = "appointmentTypeView";
+      this.appointmentTypeView.Size = new System.Drawing.Size(120, 57);
+      this.appointmentTypeView.TabIndex = 2;
+      // 
+      // AppointmentTypeDialog
+      // 
+      this.AcceptButton = this.okButton;
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.CancelButton = this.cancleButton;
+      this.ClientSize = new System.Drawing.Size(214, 108);
+      this.Controls.Add(this.appointmentTypeView);
+      this.Controls.Add(this.cancleButton);
+      this.Controls.Add(this.okButton);
+      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+      this.MaximizeBox = false;
+      this.MinimizeBox = false;
+      this.Name = "AppointmentTypeDialog";
+      this.ShowIcon = false;
+      this.ShowInTaskbar = false;
+      this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
+      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+      this.Text = "Select Type of Downtime";
+      this.TopMost = true;
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button okButton;
+    private System.Windows.Forms.Button cancleButton;
+    private AppointmentTypeView appointmentTypeView;
+  }
+}
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeDialog.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeDialog.cs	(revision 8953)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeDialog.cs	(revision 8953)
@@ -0,0 +1,44 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Windows.Forms;
+
+namespace HeuristicLab.Clients.Hive.Administrator.Views {
+  public partial class AppointmentTypeDialog : Form {
+    public DowntimeType AppointmentType {
+      get {
+        return appointmentTypeView.AppointmentType;
+      }
+    }
+
+    public AppointmentTypeDialog() {
+      InitializeComponent();
+    }
+
+    private void okButton_Click(object sender, System.EventArgs e) {
+      Close();
+    }
+
+    private void cancleButton_Click(object sender, System.EventArgs e) {
+      Close();
+    }
+  }
+}
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeView.Designer.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeView.Designer.cs	(revision 8953)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeView.Designer.cs	(revision 8953)
@@ -0,0 +1,87 @@
+﻿namespace HeuristicLab.Clients.Hive.Administrator.Views {
+  partial class AppointmentTypeView {
+    /// <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 Component 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.OfflineRadioButton = new System.Windows.Forms.RadioButton();
+      this.shutdownRadioButton = new System.Windows.Forms.RadioButton();
+      this.panel1 = new System.Windows.Forms.Panel();
+      this.panel1.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // OfflineRadioButton
+      // 
+      this.OfflineRadioButton.AutoSize = true;
+      this.OfflineRadioButton.Checked = true;
+      this.OfflineRadioButton.Location = new System.Drawing.Point(3, 3);
+      this.OfflineRadioButton.Name = "OfflineRadioButton";
+      this.OfflineRadioButton.Size = new System.Drawing.Size(55, 17);
+      this.OfflineRadioButton.TabIndex = 0;
+      this.OfflineRadioButton.TabStop = true;
+      this.OfflineRadioButton.Tag = "Offline";
+      this.OfflineRadioButton.Text = "Offline";
+      this.OfflineRadioButton.UseVisualStyleBackColor = true;
+      this.OfflineRadioButton.CheckedChanged += new System.EventHandler(this.OfflineRadioButton_CheckedChanged);
+      // 
+      // shutdownRadioButton
+      // 
+      this.shutdownRadioButton.AutoSize = true;
+      this.shutdownRadioButton.Location = new System.Drawing.Point(3, 26);
+      this.shutdownRadioButton.Name = "shutdownRadioButton";
+      this.shutdownRadioButton.Size = new System.Drawing.Size(105, 17);
+      this.shutdownRadioButton.TabIndex = 1;
+      this.shutdownRadioButton.TabStop = true;
+      this.shutdownRadioButton.Tag = "Shutdown";
+      this.shutdownRadioButton.Text = "Shutdown Signal";
+      this.shutdownRadioButton.UseVisualStyleBackColor = true;
+      this.shutdownRadioButton.CheckedChanged += new System.EventHandler(this.shutdownRadioButton_CheckedChanged);
+      // 
+      // panel1
+      // 
+      this.panel1.Controls.Add(this.shutdownRadioButton);
+      this.panel1.Controls.Add(this.OfflineRadioButton);
+      this.panel1.Location = new System.Drawing.Point(3, 3);
+      this.panel1.Name = "panel1";
+      this.panel1.Size = new System.Drawing.Size(114, 51);
+      this.panel1.TabIndex = 2;
+      // 
+      // AppointmentTypeView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.panel1);
+      this.Name = "AppointmentTypeView";
+      this.Size = new System.Drawing.Size(120, 57);
+      this.panel1.ResumeLayout(false);
+      this.panel1.PerformLayout();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.RadioButton OfflineRadioButton;
+    private System.Windows.Forms.RadioButton shutdownRadioButton;
+    private System.Windows.Forms.Panel panel1;
+  }
+}
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeView.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeView.cs	(revision 8953)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/AppointmentTypeView.cs	(revision 8953)
@@ -0,0 +1,42 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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.Windows.Forms;
+
+namespace HeuristicLab.Clients.Hive.Administrator.Views {
+  public partial class AppointmentTypeView : UserControl {
+    public DowntimeType AppointmentType { get; set; }
+
+    public AppointmentTypeView() {
+      InitializeComponent();
+      AppointmentType = DowntimeType.Offline;
+    }
+
+    private void OfflineRadioButton_CheckedChanged(object sender, EventArgs e) {
+      AppointmentType = DowntimeType.Offline;
+    }
+
+    private void shutdownRadioButton_CheckedChanged(object sender, EventArgs e) {
+      AppointmentType = DowntimeType.Shutdown;
+    }
+  }
+}
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/Recurrence.Designer.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/Recurrence.Designer.cs	(revision 8952)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/Recurrence.Designer.cs	(revision 8953)
@@ -63,6 +63,9 @@
       this.cbTuesday = new System.Windows.Forms.CheckBox();
       this.cbMonday = new System.Windows.Forms.CheckBox();
+      this.appointmentTypeView = new HeuristicLab.Clients.Hive.Administrator.Views.AppointmentTypeView();
+      this.gbDowntimeType = new System.Windows.Forms.GroupBox();
       this.gbAppointment.SuspendLayout();
       this.gbWeekly.SuspendLayout();
+      this.gbDowntimeType.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -149,5 +152,5 @@
       // btSaveRecurrence
       // 
-      this.btSaveRecurrence.Location = new System.Drawing.Point(2, 217);
+      this.btSaveRecurrence.Location = new System.Drawing.Point(2, 298);
       this.btSaveRecurrence.Name = "btSaveRecurrence";
       this.btSaveRecurrence.Size = new System.Drawing.Size(147, 23);
@@ -159,5 +162,5 @@
       // btCancelRecurrence
       // 
-      this.btCancelRecurrence.Location = new System.Drawing.Point(241, 217);
+      this.btCancelRecurrence.Location = new System.Drawing.Point(241, 298);
       this.btCancelRecurrence.Name = "btCancelRecurrence";
       this.btCancelRecurrence.Size = new System.Drawing.Size(147, 23);
@@ -253,9 +256,27 @@
       this.cbMonday.UseVisualStyleBackColor = true;
       // 
+      // appointmentTypeView
+      // 
+      this.appointmentTypeView.AppointmentType = HeuristicLab.Clients.Hive.DowntimeType.Offline;
+      this.appointmentTypeView.Location = new System.Drawing.Point(10, 19);
+      this.appointmentTypeView.Name = "appointmentTypeView";
+      this.appointmentTypeView.Size = new System.Drawing.Size(120, 50);
+      this.appointmentTypeView.TabIndex = 45;
+      // 
+      // gbDowntimeType
+      // 
+      this.gbDowntimeType.Controls.Add(this.appointmentTypeView);
+      this.gbDowntimeType.Location = new System.Drawing.Point(2, 217);
+      this.gbDowntimeType.Name = "gbDowntimeType";
+      this.gbDowntimeType.Size = new System.Drawing.Size(386, 75);
+      this.gbDowntimeType.TabIndex = 46;
+      this.gbDowntimeType.TabStop = false;
+      this.gbDowntimeType.Text = "Type of Downtime";
+      // 
       // Recurrence
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-      this.ClientSize = new System.Drawing.Size(393, 243);
+      this.ClientSize = new System.Drawing.Size(393, 332);
+      this.Controls.Add(this.gbDowntimeType);
       this.Controls.Add(this.gbWeekly);
       this.Controls.Add(this.btCancelRecurrence);
@@ -263,11 +284,14 @@
       this.Controls.Add(this.gbAppointment);
       this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
-      this.Icon = HeuristicLab.Common.Resources.HeuristicLab.Icon;
       this.Name = "Recurrence";
+      this.ShowIcon = false;
+      this.ShowInTaskbar = false;
       this.Text = "Recurrence";
+      this.TopMost = true;
       this.gbAppointment.ResumeLayout(false);
       this.gbAppointment.PerformLayout();
       this.gbWeekly.ResumeLayout(false);
       this.gbWeekly.PerformLayout();
+      this.gbDowntimeType.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -294,4 +318,6 @@
     private System.Windows.Forms.CheckBox cbTuesday;
     private System.Windows.Forms.CheckBox cbMonday;
+    private AppointmentTypeView appointmentTypeView;
+    private System.Windows.Forms.GroupBox gbDowntimeType;
   }
 }
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/Recurrence.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/Recurrence.cs	(revision 8952)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/Recurrence.cs	(revision 8953)
@@ -53,5 +53,6 @@
           DateTo = dateTo,
           AllDay = chbade.Checked,
-          WeekDays = days
+          WeekDays = days,
+          AppointmentType = appointmentTypeView.AppointmentType
         };
 
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ScheduleView.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ScheduleView.cs	(revision 8952)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ScheduleView.cs	(revision 8953)
@@ -91,5 +91,5 @@
     }
 
-    private bool CreateAppointment() {
+    private bool CreateAppointment(DowntimeType dtType) {
       DateTime from, to;
 
@@ -98,5 +98,5 @@
           //whole day appointment, only dates are visible
           if (DateTime.TryParse(dtpFrom.Text, out from) && DateTime.TryParse(dtpTo.Text, out to) && from <= to)
-            offlineTimes.Add(CreateAppointment(from, to.AddDays(1), true));
+            offlineTimes.Add(CreateAppointment(from, to.AddDays(1), true, dtType));
           else
             MessageBox.Show("Incorrect date format", "Schedule Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
@@ -105,12 +105,12 @@
           if (DateTime.TryParse(dtpFrom.Text + " " + txttimeFrom.Text, out from) && DateTime.TryParse(dtpTo.Text + " " + txttimeTo.Text, out to) && from < to) {
             if (from.Date == to.Date)
-              offlineTimes.Add(CreateAppointment(from, to, false));
+              offlineTimes.Add(CreateAppointment(from, to, false, dtType));
             else {
               //more than 1 day selected
               while (from.Date != to.Date) {
-                offlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false));
+                offlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false, dtType));
                 from = from.AddDays(1);
               }
-              offlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false));
+              offlineTimes.Add(CreateAppointment(from, new DateTime(from.Year, from.Month, from.Day, to.Hour, to.Minute, 0, 0), false, dtType));
             }
           } else
@@ -125,5 +125,5 @@
     }
 
-    private HiveAppointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay) {
+    private HiveAppointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, DowntimeType downtimeType) {
       HiveAppointment app = new HiveAppointment();
       app.StartDate = startDate;
@@ -132,10 +132,10 @@
       app.BorderColor = Color.Red;
       app.Locked = true;
-      app.Subject = "Offline";
+      app.Subject = downtimeType.ToString();
       app.Recurring = false;
       return app;
     }
 
-    private HiveAppointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, bool recurring, Guid recurringId) {
+    private HiveAppointment CreateAppointment(DateTime startDate, DateTime endDate, bool allDay, bool recurring, Guid recurringId, DowntimeType downtimeType) {
       HiveAppointment app = new HiveAppointment();
       app.StartDate = startDate;
@@ -144,5 +144,5 @@
       app.BorderColor = Color.Red;
       app.Locked = true;
-      app.Subject = "Offline";
+      app.Subject = downtimeType.ToString();
       app.Recurring = recurring;
       app.RecurringId = recurringId;
@@ -164,14 +164,11 @@
       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);
-      offlineTimes.AddRange(recurringAppointments);
     }
 
     public void DialogClosed(RecurrentEvent e) {
-      CreateDailyRecurrenceAppointments(e.DateFrom, e.DateTo, e.AllDay, e.WeekDays);
-    }
-
-    private void CreateDailyRecurrenceAppointments(DateTime dateFrom, DateTime dateTo, bool allDay, HashSet<DayOfWeek> daysOfWeek) {
+      CreateDailyRecurrenceAppointments(e.DateFrom, e.DateTo, e.AllDay, e.WeekDays, e.AppointmentType);
+    }
+
+    private void CreateDailyRecurrenceAppointments(DateTime dateFrom, DateTime dateTo, bool allDay, HashSet<DayOfWeek> daysOfWeek, DowntimeType appointmentType) {
       DateTime incDate = dateFrom;
       Guid guid = Guid.NewGuid();
@@ -179,5 +176,5 @@
       while (incDate.Date <= dateTo.Date) {
         if (daysOfWeek.Contains(incDate.Date.DayOfWeek))
-          offlineTimes.Add(CreateAppointment(incDate, new DateTime(incDate.Year, incDate.Month, incDate.Day, dateTo.Hour, dateTo.Minute, 0), allDay, true, guid));
+          offlineTimes.Add(CreateAppointment(incDate, new DateTime(incDate.Year, incDate.Month, incDate.Day, dateTo.Hour, dateTo.Minute, 0), allDay, true, guid, appointmentType));
         incDate = incDate.AddDays(1);
       }
@@ -284,9 +281,16 @@
     private void btCreate_Click(object sender, EventArgs e) {
       if (dvOnline.Selection != SelectionType.Appointment) {
-        CreateAppointment();
+        DowntimeType dtType;
+        DialogResult result;
+        AppointmentTypeDialog dialog = new AppointmentTypeDialog();
+        result = dialog.ShowDialog(this);
+        dtType = dialog.AppointmentType;
+        dialog.Dispose();
+        if (result == DialogResult.Cancel) return;
+        CreateAppointment(dtType);
       } else {
         //now we want to change an existing appointment
         if (!dvOnline.SelectedAppointment.Recurring) {
-          if (CreateAppointment())
+          if (CreateAppointment(GetDowntimeTypeOfSelectedAppointment()))
             DeleteAppointment();
         } else {
@@ -295,5 +299,5 @@
           DialogResult res = MessageBox.Show("Change all events in this series?", "Change recurrences", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
           if (res != DialogResult.Yes) {
-            if (CreateAppointment())
+            if (CreateAppointment(GetDowntimeTypeOfSelectedAppointment()))
               DeleteAppointment();
           } else
@@ -339,5 +343,5 @@
         BorderColor = Color.Red,
         Locked = true,
-        Subject = "Offline",
+        Subject = downtime.DowntimeType.ToString(),
         Changed = downtime.Modified,
         Id = downtime.Id
@@ -354,8 +358,13 @@
         RecurringId = app.RecurringId,
         ResourceId = HiveAdminClient.Instance.DowntimeForResourceId,
-        Id = app.Id
+        Id = app.Id,
+        DowntimeType = (DowntimeType)Enum.Parse(typeof(DowntimeType), app.Subject)
       };
       return downtime;
     }
+
+    private DowntimeType GetDowntimeTypeOfSelectedAppointment() {
+      return (DowntimeType)Enum.Parse(typeof(DowntimeType), ((HiveAppointment)dvOnline.SelectedAppointment).Subject);
+    }
   }
 }
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs	(revision 8952)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive.Slave/3.3/Core.cs	(revision 8953)
@@ -25,5 +25,4 @@
 using System.Threading;
 using System.Threading.Tasks;
-using HeuristicLab.Clients.Hive.SlaveCore.Properties;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -53,5 +52,5 @@
 
     public Core() {
-      var log = new ThreadSafeLog(Settings.Default.MaxLogCount);
+      var log = new ThreadSafeLog(SlaveCore.Properties.Settings.Default.MaxLogCount);
       this.pluginManager = new PluginManager(WcfService.Instance, log);
       this.taskManager = new TaskManager(pluginManager, log);
@@ -454,15 +453,16 @@
 
     private void ShutdownComputer() {
-      Shutdown();
-
-      try {
-        Process.Start(Settings.Default.ShutdownCommand);
-      }
-      catch (Exception ex) {
-        if (ServiceEventLog != null) {
-          EventLogManager.LogException(ex);
-        } else
-          throw ex;
-      }
+      var t = TS.Task.Factory.StartNew(new Action(Shutdown));
+      t.ContinueWith(c => {
+        try {
+          Process.Start(SlaveCore.Properties.Settings.Default.ShutdownCommand);
+        }
+        catch (Exception ex) {
+          if (ServiceEventLog != null) {
+            EventLogManager.LogException(ex);
+          } else
+            throw ex;
+        }
+      });
     }
 
Index: /branches/SlaveShutdown/HeuristicLab.Clients.Hive/3.3/ServiceClients/Downtime.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Clients.Hive/3.3/ServiceClients/Downtime.cs	(revision 8952)
+++ /branches/SlaveShutdown/HeuristicLab.Clients.Hive/3.3/ServiceClients/Downtime.cs	(revision 8953)
@@ -40,4 +40,5 @@
       this.ResourceId = original.ResourceId;
       this.StartDate = original.StartDate;
+      this.DowntimeType = original.DowntimeType;
     }
 
Index: /branches/SlaveShutdown/HeuristicLab.Services.Hive/3.3/Manager/HeartbeatManager.cs
===================================================================
--- /branches/SlaveShutdown/HeuristicLab.Services.Hive/3.3/Manager/HeartbeatManager.cs	(revision 8952)
+++ /branches/SlaveShutdown/HeuristicLab.Services.Hive/3.3/Manager/HeartbeatManager.cs	(revision 8953)
@@ -154,5 +154,5 @@
 
     private bool ShutdownSlaveComputer(Guid slaveId) {
-      return dao.GetParentResources(slaveId).All(r => dao.GetDowntimes(x => x.ResourceId == r.Id && x.DowntimeType == DA.DowntimeType.Shutdown && DateTime.Now >= x.StartDate).Count() != 0);
+      return dao.GetParentResources(slaveId).Any(r => dao.GetDowntimes(x => x.ResourceId == r.Id && x.DowntimeType == DA.DowntimeType.Shutdown && (DateTime.Now >= x.StartDate) && (DateTime.Now <= x.EndDate)).Count() != 0);
     }
   }
