Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/HeuristicLab.Clients.Hive.Administrator-3.3.csproj
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/HeuristicLab.Clients.Hive.Administrator-3.3.csproj	(revision 6760)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/HeuristicLab.Clients.Hive.Administrator-3.3.csproj	(revision 6761)
@@ -159,8 +159,8 @@
       <DependentUpon>HiveAdministratorView.cs</DependentUpon>
     </Compile>
-    <Compile Include="Views\HiveAppointment.cs">
+    <Compile Include="HiveAppointment.cs">
       <SubType>Code</SubType>
     </Compile>
-    <Compile Include="Views\MenuItems\AdministratorMenuItem.cs" />
+    <Compile Include="MenuItems\AdministratorMenuItem.cs" />
     <Compile Include="Views\Recurrence.cs">
       <SubType>Form</SubType>
@@ -169,5 +169,5 @@
       <DependentUpon>Recurrence.cs</DependentUpon>
     </Compile>
-    <Compile Include="Views\RecurrentEvent.cs" />
+    <Compile Include="RecurrentEvent.cs" />
     <Compile Include="Views\ResourcesView.cs">
       <SubType>UserControl</SubType>
@@ -189,10 +189,4 @@
     </Compile>
     <Compile Include="HeuristicLabClientsHiveAdministratorPlugin.cs" />
-    <Compile Include="Views\Common\UpdateControl.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Views\Common\UpdateControl.Designer.cs">
-      <DependentUpon>UpdateControl.cs</DependentUpon>
-    </Compile>
     <None Include="HeuristicLabClientsHiveAdministratorPlugin.cs.frame" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -236,7 +230,4 @@
       <DependentUpon>SlaveView.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="Views\Common\UpdateControl.resx">
-      <DependentUpon>UpdateControl.cs</DependentUpon>
-    </EmbeddedResource>
   </ItemGroup>
   <ItemGroup>
@@ -245,7 +236,4 @@
   <ItemGroup>
     <None Include="Views\Images\network_center.ico" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="Views\Images\status_anim.gif" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/HiveAppointment.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/HiveAppointment.cs	(revision 6761)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/HiveAppointment.cs	(revision 6761)
@@ -0,0 +1,141 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Drawing;
+using System.Xml.Serialization;
+
+namespace HeuristicLab.Clients.Hive.Administrator.Views {
+
+  public class HiveAppointment : Calendar.Appointment {
+    private Guid recurringId = Guid.Empty;
+
+    [XmlIgnore]
+    public bool Changed { get; set; }
+
+    public HiveAppointment()
+      : base() {
+      Changed = false;
+    }
+
+    [XmlIgnore]
+    public new int Layer {
+      get { return base.Layer; }
+      set { base.Layer = value; }
+    }
+
+    [XmlIgnore]
+    public new string Group {
+      get { return base.Group; }
+      set { base.Group = value; }
+    }
+
+    [XmlAttribute("Locked")]
+    public new bool Locked {
+      get { return base.Locked; }
+      set { base.Locked = value; }
+    }
+
+    [XmlIgnore]
+    public new Color Color {
+      get { return base.Color; }
+      set { base.Color = value; }
+    }
+
+    [XmlIgnore]
+    public new Color TextColor {
+      get { return base.TextColor; }
+      set { base.TextColor = value; }
+    }
+
+    [XmlIgnore]
+    public new Color BorderColor {
+      get { return base.BorderColor; }
+      set { base.BorderColor = value; }
+    }
+
+    [XmlIgnore]
+    public new bool DrawBorder {
+      get { return base.DrawBorder; }
+      set { base.DrawBorder = value; }
+    }
+
+    [XmlAttribute("AllDayEvent")]
+    public new bool AllDayEvent {
+      get { return base.AllDayEvent; }
+      set { base.AllDayEvent = value; Changed = true; }
+    }
+
+    [XmlAttribute("Recurring")]
+    public new bool Recurring {
+      get { return base.Recurring; }
+      set { base.Recurring = value; Changed = true; }
+    }
+
+    [XmlAttribute("RecurringId")]
+    public Guid RecurringId {
+      get { return recurringId; }
+      set { recurringId = value; Changed = true; }
+    }
+
+    [XmlAttribute("EndDate")]
+    public new DateTime EndDate {
+      get { return base.EndDate; }
+      set { base.EndDate = value; Changed = true; }
+    }
+
+    [XmlAttribute("StartDate")]
+    public new DateTime StartDate {
+      get { return base.StartDate; }
+      set { base.StartDate = value; Changed = true; }
+    }
+
+    [XmlIgnore]
+    public new int AppointmentId {
+      get { return base.AppointmentId; }
+      set { base.AppointmentId = value; }
+    }
+
+    [XmlElement("Subject")]
+    public new string Subject {
+      get { return base.Subject; }
+      set { base.Subject = value; }
+    }
+
+    [XmlIgnore]
+    public new string Location {
+      get { return base.Location; }
+      set { base.Location = value; }
+    }
+
+    [XmlIgnore]
+    public new string Note {
+      get { return base.Note; }
+      set { base.Note = value; }
+    }
+
+    [XmlIgnore]
+    public bool Deleted { get; set; }
+
+    [XmlIgnore]
+    public Guid Id { get; set; }
+  }
+}
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/MenuItems/AdministratorMenuItem.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/MenuItems/AdministratorMenuItem.cs	(revision 6761)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/MenuItems/AdministratorMenuItem.cs	(revision 6761)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Collections.Generic;
+using HeuristicLab.Clients.Hive;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Optimizer.MenuItems {
+  public class AdministratorMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "&Administrator"; }
+    }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "&Services", "&Hive" }; }
+    }
+    public override void Execute() {
+      MainFormManager.MainForm.ShowContent(HiveAdminClient.Instance);
+    }
+    public override int Position {
+      get { return 10000; }
+    }
+  }
+}
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/RecurrentEvent.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/RecurrentEvent.cs	(revision 6761)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/RecurrentEvent.cs	(revision 6761)
@@ -0,0 +1,32 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Clients.Hive.Administrator.Views {
+  public class RecurrentEvent {
+    public DateTime DateFrom { get; set; }
+    public DateTime DateTo { get; set; }
+    public bool AllDay { get; set; }    
+    public HashSet<DayOfWeek> WeekDays { get; set; }
+  }
+}
Index: anches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/HiveAppointment.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/HiveAppointment.cs	(revision 6760)
+++ 	(revision )
@@ -1,141 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Drawing;
-using System.Xml.Serialization;
-
-namespace HeuristicLab.Clients.Hive.Administrator.Views {
-
-  public class HiveAppointment : Calendar.Appointment {
-    private Guid recurringId = Guid.Empty;
-
-    [XmlIgnore]
-    public bool Changed { get; set; }
-
-    public HiveAppointment()
-      : base() {
-      Changed = false;
-    }
-
-    [XmlIgnore]
-    public new int Layer {
-      get { return base.Layer; }
-      set { base.Layer = value; }
-    }
-
-    [XmlIgnore]
-    public new string Group {
-      get { return base.Group; }
-      set { base.Group = value; }
-    }
-
-    [XmlAttribute("Locked")]
-    public new bool Locked {
-      get { return base.Locked; }
-      set { base.Locked = value; }
-    }
-
-    [XmlIgnore]
-    public new Color Color {
-      get { return base.Color; }
-      set { base.Color = value; }
-    }
-
-    [XmlIgnore]
-    public new Color TextColor {
-      get { return base.TextColor; }
-      set { base.TextColor = value; }
-    }
-
-    [XmlIgnore]
-    public new Color BorderColor {
-      get { return base.BorderColor; }
-      set { base.BorderColor = value; }
-    }
-
-    [XmlIgnore]
-    public new bool DrawBorder {
-      get { return base.DrawBorder; }
-      set { base.DrawBorder = value; }
-    }
-
-    [XmlAttribute("AllDayEvent")]
-    public new bool AllDayEvent {
-      get { return base.AllDayEvent; }
-      set { base.AllDayEvent = value; Changed = true; }
-    }
-
-    [XmlAttribute("Recurring")]
-    public new bool Recurring {
-      get { return base.Recurring; }
-      set { base.Recurring = value; Changed = true; }
-    }
-
-    [XmlAttribute("RecurringId")]
-    public Guid RecurringId {
-      get { return recurringId; }
-      set { recurringId = value; Changed = true; }
-    }
-
-    [XmlAttribute("EndDate")]
-    public new DateTime EndDate {
-      get { return base.EndDate; }
-      set { base.EndDate = value; Changed = true; }
-    }
-
-    [XmlAttribute("StartDate")]
-    public new DateTime StartDate {
-      get { return base.StartDate; }
-      set { base.StartDate = value; Changed = true; }
-    }
-
-    [XmlIgnore]
-    public new int AppointmentId {
-      get { return base.AppointmentId; }
-      set { base.AppointmentId = value; }
-    }
-
-    [XmlElement("Subject")]
-    public new string Subject {
-      get { return base.Subject; }
-      set { base.Subject = value; }
-    }
-
-    [XmlIgnore]
-    public new string Location {
-      get { return base.Location; }
-      set { base.Location = value; }
-    }
-
-    [XmlIgnore]
-    public new string Note {
-      get { return base.Note; }
-      set { base.Note = value; }
-    }
-
-    [XmlIgnore]
-    public bool Deleted { get; set; }
-
-    [XmlIgnore]
-    public Guid Id { get; set; }
-  }
-}
Index: anches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/RecurrentEvent.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/RecurrentEvent.cs	(revision 6760)
+++ 	(revision )
@@ -1,32 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-namespace HeuristicLab.Clients.Hive.Administrator.Views {
-  public class RecurrentEvent {
-    public DateTime DateFrom { get; set; }
-    public DateTime DateTo { get; set; }
-    public bool AllDay { get; set; }    
-    public HashSet<DayOfWeek> WeekDays { get; set; }
-  }
-}
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.Designer.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.Designer.cs	(revision 6760)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.Designer.cs	(revision 6761)
@@ -20,5 +20,5 @@
 #endregion
 
-using HeuristicLab.Clients.Hive.Administrator.Views.Common;
+
 namespace HeuristicLab.Clients.Hive.Administrator.Views {
   partial class ResourcesView {
@@ -50,5 +50,5 @@
       this.imageListSlaveGroups = new System.Windows.Forms.ImageList(this.components);
       this.splitSlaves = new System.Windows.Forms.SplitContainer();
-      this.updateSlaveGroup = new HeuristicLab.Clients.Hive.Administrator.Views.Common.UpdateControl();
+      this.progressBar = new System.Windows.Forms.ProgressBar();
       this.btnSave = new System.Windows.Forms.Button();
       this.btnRemoveGroup = new System.Windows.Forms.Button();
@@ -57,9 +57,8 @@
       this.tabSlaveGroup = new System.Windows.Forms.TabControl();
       this.tabDetails = new System.Windows.Forms.TabPage();
+      this.tabSchedule = new System.Windows.Forms.TabPage();
+      this.btnRefresh = new System.Windows.Forms.Button();
       this.slaveView = new HeuristicLab.Clients.Hive.Administrator.Views.SlaveView();
-      this.tabSchedule = new System.Windows.Forms.TabPage();
-      this.updateScheduleControl = new HeuristicLab.Clients.Hive.Administrator.Views.Common.UpdateControl();
       this.scheduleView = new HeuristicLab.Clients.Hive.Administrator.Views.ScheduleView();
-      this.progressBar = new System.Windows.Forms.ProgressBar();
       ((System.ComponentModel.ISupportInitialize)(this.splitSlaves)).BeginInit();
       this.splitSlaves.Panel1.SuspendLayout();
@@ -87,6 +86,6 @@
       // splitSlaves.Panel1
       // 
+      this.splitSlaves.Panel1.Controls.Add(this.btnRefresh);
       this.splitSlaves.Panel1.Controls.Add(this.progressBar);
-      this.splitSlaves.Panel1.Controls.Add(this.updateSlaveGroup);
       this.splitSlaves.Panel1.Controls.Add(this.btnSave);
       this.splitSlaves.Panel1.Controls.Add(this.btnRemoveGroup);
@@ -101,16 +100,16 @@
       this.splitSlaves.TabIndex = 3;
       // 
-      // updateSlaveGroup
-      // 
-      this.updateSlaveGroup.Location = new System.Drawing.Point(94, 3);
-      this.updateSlaveGroup.Name = "updateSlaveGroup";
-      this.updateSlaveGroup.Size = new System.Drawing.Size(75, 24);
-      this.updateSlaveGroup.TabIndex = 6;
-      this.updateSlaveGroup.UpdateAction = null;
+      // progressBar
+      // 
+      this.progressBar.Location = new System.Drawing.Point(123, 4);
+      this.progressBar.Name = "progressBar";
+      this.progressBar.Size = new System.Drawing.Size(123, 23);
+      this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
+      this.progressBar.TabIndex = 7;
       // 
       // btnSave
       // 
       this.btnSave.Image = ((System.Drawing.Image)(resources.GetObject("btnSave.Image")));
-      this.btnSave.Location = new System.Drawing.Point(63, 3);
+      this.btnSave.Location = new System.Drawing.Point(93, 3);
       this.btnSave.Name = "btnSave";
       this.btnSave.Size = new System.Drawing.Size(24, 24);
@@ -122,5 +121,5 @@
       // 
       this.btnRemoveGroup.Image = ((System.Drawing.Image)(resources.GetObject("btnRemoveGroup.Image")));
-      this.btnRemoveGroup.Location = new System.Drawing.Point(33, 3);
+      this.btnRemoveGroup.Location = new System.Drawing.Point(63, 3);
       this.btnRemoveGroup.Name = "btnRemoveGroup";
       this.btnRemoveGroup.Size = new System.Drawing.Size(24, 24);
@@ -132,5 +131,5 @@
       // 
       this.btnAddGroup.Image = ((System.Drawing.Image)(resources.GetObject("btnAddGroup.Image")));
-      this.btnAddGroup.Location = new System.Drawing.Point(3, 3);
+      this.btnAddGroup.Location = new System.Drawing.Point(33, 3);
       this.btnAddGroup.Name = "btnAddGroup";
       this.btnAddGroup.Size = new System.Drawing.Size(24, 24);
@@ -184,19 +183,6 @@
       this.tabDetails.UseVisualStyleBackColor = true;
       // 
-      // slaveView
-      // 
-      this.slaveView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.slaveView.Caption = "SlaveView";
-      this.slaveView.Content = null;
-      this.slaveView.Location = new System.Drawing.Point(7, 7);
-      this.slaveView.Name = "slaveView";
-      this.slaveView.ReadOnly = false;
-      this.slaveView.Size = new System.Drawing.Size(564, 210);
-      this.slaveView.TabIndex = 0;
-      // 
       // tabSchedule
       // 
-      this.tabSchedule.Controls.Add(this.updateScheduleControl);
       this.tabSchedule.Controls.Add(this.scheduleView);
       this.tabSchedule.Location = new System.Drawing.Point(4, 22);
@@ -208,11 +194,25 @@
       this.tabSchedule.UseVisualStyleBackColor = true;
       // 
-      // updateScheduleControl
-      // 
-      this.updateScheduleControl.Location = new System.Drawing.Point(6, 6);
-      this.updateScheduleControl.Name = "updateScheduleControl";
-      this.updateScheduleControl.Size = new System.Drawing.Size(75, 24);
-      this.updateScheduleControl.TabIndex = 5;
-      this.updateScheduleControl.UpdateAction = null;
+      // btnRefresh
+      // 
+      this.btnRefresh.Image = ((System.Drawing.Image)(resources.GetObject("btnRefresh.Image")));
+      this.btnRefresh.Location = new System.Drawing.Point(3, 3);
+      this.btnRefresh.Name = "btnRefresh";
+      this.btnRefresh.Size = new System.Drawing.Size(24, 24);
+      this.btnRefresh.TabIndex = 8;
+      this.btnRefresh.UseVisualStyleBackColor = true;
+      this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
+      // 
+      // slaveView
+      // 
+      this.slaveView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.slaveView.Caption = "SlaveView";
+      this.slaveView.Content = null;
+      this.slaveView.Location = new System.Drawing.Point(7, 7);
+      this.slaveView.Name = "slaveView";
+      this.slaveView.ReadOnly = false;
+      this.slaveView.Size = new System.Drawing.Size(564, 210);
+      this.slaveView.TabIndex = 0;
       // 
       // scheduleView
@@ -223,17 +223,9 @@
       this.scheduleView.Caption = "ScheduleView";
       this.scheduleView.Content = null;
-      this.scheduleView.Location = new System.Drawing.Point(3, 36);
+      this.scheduleView.Location = new System.Drawing.Point(3, 8);
       this.scheduleView.Name = "scheduleView";
       this.scheduleView.ReadOnly = false;
-      this.scheduleView.Size = new System.Drawing.Size(568, 473);
+      this.scheduleView.Size = new System.Drawing.Size(568, 501);
       this.scheduleView.TabIndex = 0;
-      // 
-      // progressBar
-      // 
-      this.progressBar.Location = new System.Drawing.Point(176, 3);
-      this.progressBar.Name = "progressBar";
-      this.progressBar.Size = new System.Drawing.Size(70, 23);
-      this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
-      this.progressBar.TabIndex = 7;
       // 
       // ResourcesView
@@ -267,8 +259,7 @@
     private System.Windows.Forms.ImageList imageListSlaveGroups;
     private ScheduleView scheduleView;
-    private UpdateControl updateScheduleControl;
     private System.Windows.Forms.Button btnSave;
-    private UpdateControl updateSlaveGroup;
     private System.Windows.Forms.ProgressBar progressBar;
+    private System.Windows.Forms.Button btnRefresh;
   }
 }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.cs	(revision 6760)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.cs	(revision 6761)
@@ -41,5 +41,5 @@
     }
 
-    private const string ungroupedGroupName = "UNGROUPED";
+    public const string UngroupedGroupName = "UNGROUPED";
     private const int slaveImageIndex = 0;
     private const int slaveGroupImageIndex = 1;
@@ -52,7 +52,4 @@
       treeSlaveGroup.ImageList.Images.Add(HiveImageLibrary.Slave);
       treeSlaveGroup.ImageList.Images.Add(HiveImageLibrary.SlaveGroup);
-      //TODO: remove updatecontrol and replace with a regular button
-      updateScheduleControl.UpdateAction = new Action(UpdateSchedule);
-      updateSlaveGroup.UpdateAction = new Action(UpdateResources);
 
       HiveAdminClient.Instance.Refreshing += new EventHandler(Instance_Refreshing);
@@ -86,5 +83,4 @@
       stopProgressTask = true;
     }
-
 
     #region Register Content Events
@@ -110,9 +106,9 @@
 
         //rebuild
-        TreeNode ungrp = new TreeNode(ungroupedGroupName);
+        TreeNode ungrp = new TreeNode(UngroupedGroupName);
         ungrp.ImageIndex = slaveGroupImageIndex;
         ungrp.SelectedImageIndex = ungrp.ImageIndex;
         var newGroup = new SlaveGroup();
-        newGroup.Name = ungroupedGroupName;
+        newGroup.Name = UngroupedGroupName;
         newGroup.Id = Guid.NewGuid();
         newGroup.Description = "Contains slaves which are in no group";
@@ -246,7 +242,7 @@
 
         if (destNode.TreeView == newNode.TreeView) {
-          if (destNode.Text == ungroupedGroupName || (destNode.Parent != null && destNode.Parent.Text == ungroupedGroupName)) {
+          if (destNode.Text == UngroupedGroupName || (destNode.Parent != null && destNode.Parent.Text == UngroupedGroupName)) {
             MessageBox.Show(String.Format("You can't drag items to the {0} group.{1}This group only contains slaves which haven't yet been assigned to a real group.",
-              ungroupedGroupName, Environment.NewLine), "HeuristicLab Hive Administrator", MessageBoxButtons.OK, MessageBoxIcon.Information);
+              UngroupedGroupName, Environment.NewLine), "HeuristicLab Hive Administrator", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
           }
@@ -365,5 +361,5 @@
 
     private void DisplayError(Exception ex) {
-      MessageBox.Show("An error occured updating the schedule: " + Environment.NewLine + ex.ToString(), "HeuristicLab Hive Administrator");
+      MessageBox.Show(string.Format("An error occured while updating: {0} {1}", Environment.NewLine, ex.Message), "HeuristicLab Hive Administrator", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 
@@ -373,4 +369,8 @@
       }
     }
+
+    private void btnRefresh_Click(object sender, EventArgs e) {
+      UpdateResourcesAsync();
+    }
   }
 }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.resx
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.resx	(revision 6760)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.resx	(revision 6761)
@@ -122,4 +122,65 @@
   </metadata>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="btnRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
   <data name="btnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ScheduleView.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ScheduleView.cs	(revision 6760)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ScheduleView.cs	(revision 6761)
@@ -305,15 +305,19 @@
 
     private void btnSaveCal_Click(object sender, EventArgs e) {
-      List<Downtime> appointments = new List<Downtime>();
-      foreach (HiveAppointment app in offlineTimes) {
-        if (app.Deleted && app.Id != Guid.Empty) {
-          HiveAdminClient.Delete(ToDowntime(app));
-        } else if (app.Changed || app.Id == null || app.Id == Guid.Empty) {
-          Downtime dt = ToDowntime(app);
-          appointments.Add(dt);
-        }
-      }
-      foreach (Downtime dt in appointments) {
-        dt.Store();
+      if (HiveAdminClient.Instance.DowntimeForResourceId == null || HiveAdminClient.Instance.DowntimeForResourceId == Guid.Empty) {
+        MessageBox.Show("You have to save the goup before you can save the schedule. ", "HeuristicLab Hive Administrator", MessageBoxButtons.OK, MessageBoxIcon.Stop);
+      } else {
+        List<Downtime> appointments = new List<Downtime>();
+        foreach (HiveAppointment app in offlineTimes) {
+          if (app.Deleted && app.Id != Guid.Empty) {
+            HiveAdminClient.Delete(ToDowntime(app));
+          } else if (app.Changed || app.Id == null || app.Id == Guid.Empty) {
+            Downtime dt = ToDowntime(app);
+            appointments.Add(dt);
+          }
+        }
+        foreach (Downtime dt in appointments) {
+          dt.Store();
+        }
       }
     }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.3/HiveAdminClient.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.3/HiveAdminClient.cs	(revision 6760)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.3/HiveAdminClient.cs	(revision 6761)
@@ -54,5 +54,4 @@
           downtimes.Clear();
         }
-        OnDowntimesChanged();
       }
     }
@@ -67,9 +66,4 @@
     private void OnRefreshed() {
       var handler = Refreshed;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    public event EventHandler DowntimesChanged;
-    private void OnDowntimesChanged() {
-      var handler = DowntimesChanged;
       if (handler != null) handler(this, EventArgs.Empty);
     }
@@ -97,19 +91,4 @@
       }
     }
-    public void RefreshAsync(Action<Exception> exceptionCallback) {
-      var call = new Func<Exception>(delegate() {
-        try {
-          Refresh();
-        }
-        catch (Exception ex) {
-          return ex;
-        }
-        return null;
-      });
-      call.BeginInvoke(delegate(IAsyncResult result) {
-        Exception ex = call.EndInvoke(result);
-        if (ex != null) exceptionCallback(ex);
-      }, null);
-    }
     #endregion
 
@@ -133,19 +112,4 @@
         }
       }
-    }
-    public void RefreshCalendarAsync(Action<Exception> exceptionCallback) {
-      var call = new Func<Exception>(delegate() {
-        try {
-          RefreshCalendar();
-        }
-        catch (Exception ex) {
-          return ex;
-        }
-        return null;
-      });
-      call.BeginInvoke(delegate(IAsyncResult result) {
-        Exception ex = call.EndInvoke(result);
-        if (ex != null) exceptionCallback(ex);
-      }, null);
     }
     #endregion
@@ -175,19 +139,4 @@
       }
     }
-    public static void StoreAsync(Action<Exception> exceptionCallback, IHiveItem item, CancellationToken cancellationToken) {
-      var call = new Func<Exception>(delegate() {
-        try {
-          Store(item, cancellationToken);
-        }
-        catch (Exception ex) {
-          return ex;
-        }
-        return null;
-      });
-      call.BeginInvoke(delegate(IAsyncResult result) {
-        Exception ex = call.EndInvoke(result);
-        if (ex != null) exceptionCallback(ex);
-      }, null);
-    }
     #endregion
 
@@ -209,5 +158,4 @@
         downtimes.Clear();
       }
-      OnDowntimesChanged();
     }
   }
