Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/GanttChart/GanttChart.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/GanttChart/GanttChart.Designer.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/GanttChart/GanttChart.Designer.cs	(revision 7215)
@@ -69,5 +69,7 @@
     #endregion
 
-    private Visualization.ChartControlsExtensions.EnhancedChart chart;
+    public Visualization.ChartControlsExtensions.EnhancedChart chart;
+
+
   }
 }
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/HiveTaskView.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/HiveTaskView.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/HiveTaskView.cs	(revision 7215)
@@ -93,5 +93,9 @@
           this.jobIdTextBox.Text = Content.Task.Id.ToString();
           this.dateCreatedTextBox.Text = Content.Task.DateCreated.HasValue ? Content.Task.DateCreated.ToString() : string.Empty;
-          this.priorityComboBox.Text = Content.Task.Priority.ToString();
+          if (Content.Task.Priority >= 0 && Content.Task.Priority < priorityComboBox.Items.Count) {
+            this.priorityComboBox.SelectedIndex = Content.Task.Priority;
+          } else {
+            this.priorityComboBox.SelectedIndex = 0;
+          }
           this.coresNeededComboBox.Text = Content.Task.CoresNeeded.ToString();
           this.memoryNeededComboBox.Text = Content.Task.MemoryNeeded.ToString();
@@ -99,7 +103,7 @@
           this.jobIdTextBox.Text = string.Empty;
           this.dateCreatedTextBox.Text = string.Empty;
-          this.priorityComboBox.Text = "3";
+          this.priorityComboBox.SelectedIndex = 0;
           this.coresNeededComboBox.Text = "1";
-          this.memoryNeededComboBox.Text = "256";
+          this.memoryNeededComboBox.Text = "128";
         }
       }
@@ -201,4 +205,10 @@
       this.modifyItemButton.Enabled = (Content != null && Content.ItemTask.Item != null && (Content.Task.State == TaskState.Paused || Content.Task.State == TaskState.Offline || Content.Task.State == TaskState.Finished || Content.Task.State == TaskState.Failed || Content.Task.State == TaskState.Aborted));
     }
+
+    private void priorityComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      if (Content.Task.Priority != priorityComboBox.SelectedIndex) {
+        Content.Task.Priority = priorityComboBox.SelectedIndex;
+      }
+    }
   }
 }
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/HiveTaskView.designer.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/HiveTaskView.designer.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/HiveTaskView.designer.cs	(revision 7215)
@@ -30,4 +30,5 @@
       this.splitContainer2 = new System.Windows.Forms.SplitContainer();
       this.groupBoxGenerel = new System.Windows.Forms.GroupBox();
+      this.priorityComboBox = new System.Windows.Forms.ComboBox();
       this.jobIdLabel = new System.Windows.Forms.Label();
       this.jobIdTextBox = new System.Windows.Forms.TextBox();
@@ -36,4 +37,6 @@
       this.priorityLabel = new System.Windows.Forms.Label();
       this.configurationGroupBox = new System.Windows.Forms.GroupBox();
+      this.memoryNeededComboBox = new System.Windows.Forms.ComboBox();
+      this.coresNeededComboBox = new System.Windows.Forms.ComboBox();
       this.memoryNeededLabel = new System.Windows.Forms.Label();
       this.coresNeededLabel = new System.Windows.Forms.Label();
@@ -57,7 +60,4 @@
       this.modifyItemButton = new System.Windows.Forms.Button();
       this.tabControl = new System.Windows.Forms.TabControl();
-      this.priorityComboBox = new System.Windows.Forms.ComboBox();
-      this.coresNeededComboBox = new System.Windows.Forms.ComboBox();
-      this.memoryNeededComboBox = new System.Windows.Forms.ComboBox();
       this.stateLogTabPage.SuspendLayout();
       this.detailsTabPage.SuspendLayout();
@@ -83,5 +83,5 @@
       this.stateLogTabPage.Size = new System.Drawing.Size(563, 375);
       this.stateLogTabPage.TabIndex = 5;
-      this.stateLogTabPage.Text = "State";
+      this.stateLogTabPage.Text = "Execution History";
       this.stateLogTabPage.UseVisualStyleBackColor = true;
       // 
@@ -164,5 +164,21 @@
       this.groupBoxGenerel.TabIndex = 43;
       this.groupBoxGenerel.TabStop = false;
-      this.groupBoxGenerel.Text = "Generel";
+      this.groupBoxGenerel.Text = "General";
+      // 
+      // priorityComboBox
+      // 
+      this.priorityComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.priorityComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.priorityComboBox.FormattingEnabled = true;
+      this.priorityComboBox.Items.AddRange(new object[] {
+            "Normal",
+            "Urgent",
+            "Critical"});
+      this.priorityComboBox.Location = new System.Drawing.Point(87, 39);
+      this.priorityComboBox.Name = "priorityComboBox";
+      this.priorityComboBox.Size = new System.Drawing.Size(182, 21);
+      this.priorityComboBox.TabIndex = 43;
+      this.priorityComboBox.SelectedIndexChanged += new System.EventHandler(this.priorityComboBox_SelectedIndexChanged);
       // 
       // jobIdLabel
@@ -187,5 +203,5 @@
       // 
       this.lastUpdatedLabel.AutoSize = true;
-      this.lastUpdatedLabel.Location = new System.Drawing.Point(6, 60);
+      this.lastUpdatedLabel.Location = new System.Drawing.Point(6, 68);
       this.lastUpdatedLabel.Name = "lastUpdatedLabel";
       this.lastUpdatedLabel.Size = new System.Drawing.Size(75, 13);
@@ -197,5 +213,5 @@
       this.lastUpdatedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.lastUpdatedTextBox.Location = new System.Drawing.Point(87, 57);
+      this.lastUpdatedTextBox.Location = new System.Drawing.Point(87, 66);
       this.lastUpdatedTextBox.Name = "lastUpdatedTextBox";
       this.lastUpdatedTextBox.Size = new System.Drawing.Size(182, 20);
@@ -205,5 +221,5 @@
       // 
       this.priorityLabel.AutoSize = true;
-      this.priorityLabel.Location = new System.Drawing.Point(6, 38);
+      this.priorityLabel.Location = new System.Drawing.Point(6, 42);
       this.priorityLabel.Name = "priorityLabel";
       this.priorityLabel.Size = new System.Drawing.Size(41, 13);
@@ -227,8 +243,41 @@
       this.configurationGroupBox.Text = "Resource demands";
       // 
+      // memoryNeededComboBox
+      // 
+      this.memoryNeededComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.memoryNeededComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.memoryNeededComboBox.FormattingEnabled = true;
+      this.memoryNeededComboBox.Items.AddRange(new object[] {
+            "128",
+            "256",
+            "512",
+            "1024",
+            "2048"});
+      this.memoryNeededComboBox.Location = new System.Drawing.Point(134, 40);
+      this.memoryNeededComboBox.Name = "memoryNeededComboBox";
+      this.memoryNeededComboBox.Size = new System.Drawing.Size(134, 21);
+      this.memoryNeededComboBox.TabIndex = 42;
+      // 
+      // coresNeededComboBox
+      // 
+      this.coresNeededComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.coresNeededComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.coresNeededComboBox.FormattingEnabled = true;
+      this.coresNeededComboBox.Items.AddRange(new object[] {
+            "1",
+            "2",
+            "3",
+            "4"});
+      this.coresNeededComboBox.Location = new System.Drawing.Point(134, 13);
+      this.coresNeededComboBox.Name = "coresNeededComboBox";
+      this.coresNeededComboBox.Size = new System.Drawing.Size(134, 21);
+      this.coresNeededComboBox.TabIndex = 41;
+      // 
       // memoryNeededLabel
       // 
       this.memoryNeededLabel.AutoSize = true;
-      this.memoryNeededLabel.Location = new System.Drawing.Point(6, 38);
+      this.memoryNeededLabel.Location = new System.Drawing.Point(6, 43);
       this.memoryNeededLabel.Name = "memoryNeededLabel";
       this.memoryNeededLabel.Size = new System.Drawing.Size(122, 13);
@@ -241,21 +290,21 @@
       this.coresNeededLabel.Location = new System.Drawing.Point(6, 16);
       this.coresNeededLabel.Name = "coresNeededLabel";
-      this.coresNeededLabel.Size = new System.Drawing.Size(101, 13);
+      this.coresNeededLabel.Size = new System.Drawing.Size(104, 13);
       this.coresNeededLabel.TabIndex = 39;
-      this.coresNeededLabel.Text = "Nr. of cores needed";
+      this.coresNeededLabel.Text = "Nr. of needed cores:";
       // 
       // computeInParallelLabel
       // 
       this.computeInParallelLabel.AutoSize = true;
-      this.computeInParallelLabel.Location = new System.Drawing.Point(6, 60);
+      this.computeInParallelLabel.Location = new System.Drawing.Point(6, 67);
       this.computeInParallelLabel.Name = "computeInParallelLabel";
-      this.computeInParallelLabel.Size = new System.Drawing.Size(122, 13);
+      this.computeInParallelLabel.Size = new System.Drawing.Size(107, 13);
       this.computeInParallelLabel.TabIndex = 36;
-      this.computeInParallelLabel.Text = "Compute task in parallel:";
+      this.computeInParallelLabel.Text = "Distribute child tasks:";
       // 
       // computeInParallelCheckBox
       // 
       this.computeInParallelCheckBox.AutoSize = true;
-      this.computeInParallelCheckBox.Location = new System.Drawing.Point(135, 61);
+      this.computeInParallelCheckBox.Location = new System.Drawing.Point(135, 67);
       this.computeInParallelCheckBox.Name = "computeInParallelCheckBox";
       this.computeInParallelCheckBox.Size = new System.Drawing.Size(15, 14);
@@ -292,5 +341,5 @@
       this.commandTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.commandTextBox.Location = new System.Drawing.Point(95, 41);
+      this.commandTextBox.Location = new System.Drawing.Point(95, 39);
       this.commandTextBox.Name = "commandTextBox";
       this.commandTextBox.Size = new System.Drawing.Size(171, 20);
@@ -300,5 +349,5 @@
       // 
       this.commandLabel.AutoSize = true;
-      this.commandLabel.Location = new System.Drawing.Point(7, 41);
+      this.commandLabel.Location = new System.Drawing.Point(7, 42);
       this.commandLabel.Name = "commandLabel";
       this.commandLabel.Size = new System.Drawing.Size(57, 13);
@@ -310,5 +359,5 @@
       this.stateTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.stateTextBox.Location = new System.Drawing.Point(95, 19);
+      this.stateTextBox.Location = new System.Drawing.Point(95, 13);
       this.stateTextBox.Name = "stateTextBox";
       this.stateTextBox.Size = new System.Drawing.Size(171, 20);
@@ -318,5 +367,5 @@
       // 
       this.dateCalculatedLabel.AutoSize = true;
-      this.dateCalculatedLabel.Location = new System.Drawing.Point(7, 108);
+      this.dateCalculatedLabel.Location = new System.Drawing.Point(7, 120);
       this.dateCalculatedLabel.Name = "dateCalculatedLabel";
       this.dateCalculatedLabel.Size = new System.Drawing.Size(85, 13);
@@ -327,5 +376,5 @@
       // 
       this.stateLabel.AutoSize = true;
-      this.stateLabel.Location = new System.Drawing.Point(7, 19);
+      this.stateLabel.Location = new System.Drawing.Point(7, 16);
       this.stateLabel.Name = "stateLabel";
       this.stateLabel.Size = new System.Drawing.Size(35, 13);
@@ -337,5 +386,5 @@
       this.dateCalculatedText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.dateCalculatedText.Location = new System.Drawing.Point(95, 108);
+      this.dateCalculatedText.Location = new System.Drawing.Point(95, 117);
       this.dateCalculatedText.Name = "dateCalculatedText";
       this.dateCalculatedText.Size = new System.Drawing.Size(171, 20);
@@ -346,5 +395,5 @@
       this.dateFinishedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.dateFinishedTextBox.Location = new System.Drawing.Point(95, 130);
+      this.dateFinishedTextBox.Location = new System.Drawing.Point(95, 143);
       this.dateFinishedTextBox.Name = "dateFinishedTextBox";
       this.dateFinishedTextBox.Size = new System.Drawing.Size(171, 20);
@@ -355,5 +404,5 @@
       this.executionTimeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.executionTimeTextBox.Location = new System.Drawing.Point(95, 64);
+      this.executionTimeTextBox.Location = new System.Drawing.Point(95, 65);
       this.executionTimeTextBox.Name = "executionTimeTextBox";
       this.executionTimeTextBox.Size = new System.Drawing.Size(171, 20);
@@ -364,5 +413,5 @@
       this.dateCreatedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.dateCreatedTextBox.Location = new System.Drawing.Point(95, 86);
+      this.dateCreatedTextBox.Location = new System.Drawing.Point(95, 91);
       this.dateCreatedTextBox.Name = "dateCreatedTextBox";
       this.dateCreatedTextBox.Size = new System.Drawing.Size(171, 20);
@@ -372,5 +421,5 @@
       // 
       this.executionTimeLabel.AutoSize = true;
-      this.executionTimeLabel.Location = new System.Drawing.Point(7, 64);
+      this.executionTimeLabel.Location = new System.Drawing.Point(7, 68);
       this.executionTimeLabel.Name = "executionTimeLabel";
       this.executionTimeLabel.Size = new System.Drawing.Size(79, 13);
@@ -381,5 +430,5 @@
       // 
       this.exceptionLabel.AutoSize = true;
-      this.exceptionLabel.Location = new System.Drawing.Point(7, 152);
+      this.exceptionLabel.Location = new System.Drawing.Point(7, 172);
       this.exceptionLabel.Name = "exceptionLabel";
       this.exceptionLabel.Size = new System.Drawing.Size(57, 13);
@@ -390,5 +439,5 @@
       // 
       this.dateCreatedLabel.AutoSize = true;
-      this.dateCreatedLabel.Location = new System.Drawing.Point(7, 86);
+      this.dateCreatedLabel.Location = new System.Drawing.Point(7, 94);
       this.dateCreatedLabel.Name = "dateCreatedLabel";
       this.dateCreatedLabel.Size = new System.Drawing.Size(72, 13);
@@ -399,5 +448,5 @@
       // 
       this.dateFinishedLabel.AutoSize = true;
-      this.dateFinishedLabel.Location = new System.Drawing.Point(7, 130);
+      this.dateFinishedLabel.Location = new System.Drawing.Point(7, 146);
       this.dateFinishedLabel.Name = "dateFinishedLabel";
       this.dateFinishedLabel.Size = new System.Drawing.Size(72, 13);
@@ -409,5 +458,5 @@
       this.exceptionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.exceptionTextBox.Location = new System.Drawing.Point(95, 152);
+      this.exceptionTextBox.Location = new System.Drawing.Point(95, 169);
       this.exceptionTextBox.Name = "exceptionTextBox";
       this.exceptionTextBox.Size = new System.Drawing.Size(171, 20);
@@ -439,55 +488,4 @@
       this.tabControl.Size = new System.Drawing.Size(571, 401);
       this.tabControl.TabIndex = 25;
-      // 
-      // priorityComboBox
-      // 
-      this.priorityComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.priorityComboBox.FormattingEnabled = true;
-      this.priorityComboBox.Items.AddRange(new object[] {
-            "1",
-            "2",
-            "3",
-            "4",
-            "5"});
-      this.priorityComboBox.Location = new System.Drawing.Point(87, 35);
-      this.priorityComboBox.Name = "priorityComboBox";
-      this.priorityComboBox.Size = new System.Drawing.Size(182, 21);
-      this.priorityComboBox.TabIndex = 43;
-      // 
-      // coresNeededComboBox
-      // 
-      this.coresNeededComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.coresNeededComboBox.FormattingEnabled = true;
-      this.coresNeededComboBox.Items.AddRange(new object[] {
-            "1",
-            "2",
-            "3",
-            "4",
-            "5",
-            "6",
-            "7",
-            "8"});
-      this.coresNeededComboBox.Location = new System.Drawing.Point(134, 13);
-      this.coresNeededComboBox.Name = "coresNeededComboBox";
-      this.coresNeededComboBox.Size = new System.Drawing.Size(134, 21);
-      this.coresNeededComboBox.TabIndex = 41;
-      // 
-      // memoryNeededComboBox
-      // 
-      this.memoryNeededComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.memoryNeededComboBox.FormattingEnabled = true;
-      this.memoryNeededComboBox.Items.AddRange(new object[] {
-            "128",
-            "256",
-            "512",
-            "1024",
-            "2048"});
-      this.memoryNeededComboBox.Location = new System.Drawing.Point(134, 35);
-      this.memoryNeededComboBox.Name = "memoryNeededComboBox";
-      this.memoryNeededComboBox.Size = new System.Drawing.Size(135, 21);
-      this.memoryNeededComboBox.TabIndex = 42;
       // 
       // HiveTaskView
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.cs	(revision 7215)
@@ -23,4 +23,6 @@
 using System.Windows.Forms;
 using HeuristicLab.MainForm;
+using System.Threading.Tasks;
+using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Clients.Hive.Views {
@@ -28,4 +30,6 @@
   [Content(typeof(OptimizerHiveTask), true)]
   public partial class OptimizerHiveTaskView : HiveTaskView {
+    private ProgressView progressView;
+
     public new OptimizerHiveTask Content {
       get { return (OptimizerHiveTask)base.Content; }
@@ -67,15 +71,75 @@
     #region Child Control Events
     private void restartButton_Click(object sender, EventArgs e) {
-      Content.Restart();
+      var task = System.Threading.Tasks.Task.Factory.StartNew(ResumeTaskAsync);
+      task.ContinueWith((t) => {
+        FinishProgressView();
+        ErrorHandling.ShowErrorDialog(this, "An error occured while resuming the task.", t.Exception);
+      }, TaskContinuationOptions.OnlyOnFaulted); 
     }
 
     private void pauseButton_Click(object sender, EventArgs e) {
-      Content.Pause();
+      var task = System.Threading.Tasks.Task.Factory.StartNew(PauseTaskAsync);
+      task.ContinueWith((t) => {
+        FinishProgressView();
+        ErrorHandling.ShowErrorDialog(this, "An error occured while pausing the task.", t.Exception);
+      }, TaskContinuationOptions.OnlyOnFaulted);
     }
 
     private void stopButton_Click(object sender, EventArgs e) {
-      Content.Stop();
+      var task = System.Threading.Tasks.Task.Factory.StartNew(StopTaskAsync);
+      task.ContinueWith((t) => {
+        FinishProgressView();
+        ErrorHandling.ShowErrorDialog(this, "An error occured while stopping the task.", t.Exception);
+      }, TaskContinuationOptions.OnlyOnFaulted);
     }
     #endregion
+
+    private void PauseTaskAsync() {
+      IProgress prog = new Progress();
+      prog.Status = "Pausing task. Please be patient for the command to take effect.";
+      SetProgressView(prog);
+      Content.Pause();
+      FinishProgressView();
+    }
+
+    private void StopTaskAsync() {
+      IProgress prog = new Progress();
+      prog.Status = "Stopping task. Please be patient for the command to take effect.";
+      SetProgressView(prog);
+      Content.Stop();
+      FinishProgressView();
+    }
+
+    private void ResumeTaskAsync() {
+      IProgress prog = new Progress();
+      prog.Status = "Resuming task. Please be patient for the command to take effect.";
+      SetProgressView(prog);
+      Content.Restart();
+      FinishProgressView();
+    }
+
+    private void SetProgressView(IProgress progress) {
+      if (InvokeRequired) {
+        Invoke(new Action<IProgress>(SetProgressView), progress);
+      } else {
+        if (progressView == null) {
+          progressView = new ProgressView(this, progress);
+        } else {
+          progressView.Progress = progress;
+        }
+      }
+    }
+
+    private void FinishProgressView() {
+      if (InvokeRequired) {
+        Invoke(new Action(FinishProgressView));
+      } else {
+        if (progressView != null) {
+          progressView.Finish();
+          progressView = null;
+          SetEnabledStateOfControls();
+        }
+      }
+    }
 
     protected override void SetEnabledStateOfControls() {
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.designer.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.designer.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.designer.cs	(revision 7215)
@@ -32,7 +32,7 @@
       this.stateLogTabPage.SuspendLayout();
       this.detailsTabPage.SuspendLayout();
-      this.configurationGroupBox.SuspendLayout();
       this.jobStatusGroupBox.SuspendLayout();
       this.tabControl.SuspendLayout();
+      this.configurationGroupBox.SuspendLayout();
       this.runsTabPage.SuspendLayout();
       this.SuspendLayout();
@@ -43,4 +43,5 @@
       this.detailsTabPage.Controls.Add(this.pauseButton);
       this.detailsTabPage.Controls.Add(this.stopButton);
+      this.detailsTabPage.Controls.SetChildIndex(this.modifyItemButton, 0);
       this.detailsTabPage.Controls.SetChildIndex(this.stopButton, 0);
       this.detailsTabPage.Controls.SetChildIndex(this.pauseButton, 0);
@@ -54,7 +55,7 @@
       this.tabControl.Controls.SetChildIndex(this.detailsTabPage, 0);
       // 
-      // showItemButton
+      // modifyItemButton
       // 
-      this.modifyItemButton.Text = "Modify Optimizer";
+      this.modifyItemButton.Text = "Show/Modify Optimizer";
       // 
       // restartButton
@@ -123,10 +124,9 @@
       this.stateLogTabPage.ResumeLayout(false);
       this.detailsTabPage.ResumeLayout(false);
-      this.detailsTabPage.PerformLayout();
-      this.configurationGroupBox.ResumeLayout(false);
-      this.configurationGroupBox.PerformLayout();
       this.jobStatusGroupBox.ResumeLayout(false);
       this.jobStatusGroupBox.PerformLayout();
       this.tabControl.ResumeLayout(false);
+      this.configurationGroupBox.ResumeLayout(false);
+      this.configurationGroupBox.PerformLayout();
       this.runsTabPage.ResumeLayout(false);
       this.ResumeLayout(false);
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.resx
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.resx	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/HiveTasks/OptimizerHiveTaskView.resx	(revision 7215)
@@ -119,4 +119,24 @@
   </resheader>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="restartButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK/wAA
+        Cv8BNGKaggAAALBJREFUOE9j+P//PwMlGKvmsv3ZbsQaitWAhBkR/4k1BKcBlmX6RBmC1YCoKUH/N9xa
+        /J8YQ7AaEDzBG2Q7UYZgNcCnyxlsAAhHLQrA6xKsBjg2W/zP2BAL1mzbrP9fp1jhv0QaN4hWQ48drAaY
+        1+ihaOZPYMGqGWQYVgP0SpXhNuPTjNMAlXwpsLMJacZpgHSGIFGacRogksyJ089EBSK20MaVNyjKiTi9
+        QGxOBKkDACT9xOni1RbMAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="pauseButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK/wAA
+        Cv8BNGKaggAAAL5JREFUOE9j+P//PwMlmCLNIIsHoQG9m//+79rw63/e1EefQE5E56OHF4YXQJqvPvzz
+        Xzd0FVDtfwZ0PkED2tZ++3/r6e//qn6LwAag8wka0Lji8//LD3//l3ObBTYAnU/QgNrF7/+fuP77v5jd
+        JLAB6HyCBlTMe/V/94Wf//nNusEGoPMJGlAy+/n/9Sd//uc0aAUbgM4naEDB9Mf/F+z5/J9VpxFsADqf
+        oAGg+GfTbYIbgM4naACpGWvg8wIAkX3yJyVePz4AAAAASUVORK5CYII=
+</value>
+  </data>
   <data name="stopButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -132,23 +152,3 @@
 </value>
   </data>
-  <data name="pauseButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK/wAA
-        Cv8BNGKaggAAAL5JREFUOE9j+P//PwMlmCLNIIsHoQG9m//+79rw63/e1EefQE5E56OHF4YXQJqvPvzz
-        Xzd0FVDtfwZ0PkED2tZ++3/r6e//qn6LwAag8wka0Lji8//LD3//l3ObBTYAnU/QgNrF7/+fuP77v5jd
-        JLAB6HyCBlTMe/V/94Wf//nNusEGoPMJGlAy+/n/9Sd//uc0aAUbgM4naEDB9Mf/F+z5/J9VpxFsADqf
-        oAGg+GfTbYIbgM4naACpGWvg8wIAkX3yJyVePz4AAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="restartButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK/wAA
-        Cv8BNGKaggAAALBJREFUOE9j+P//PwMlGKvmsv3ZbsQaitWAhBkR/4k1BKcBlmX6RBmC1YCoKUH/N9xa
-        /J8YQ7AaEDzBG2Q7UYZgNcCnyxlsAAhHLQrA6xKsBjg2W/zP2BAL1mzbrP9fp1jhv0QaN4hWQ48drAaY
-        1+ihaOZPYMGqGWQYVgP0SpXhNuPTjNMAlXwpsLMJacZpgHSGIFGacRogksyJ089EBSK20MaVNyjKiTi9
-        QGxOBKkDACT9xOni1RbMAAAAAElFTkSuQmCC
-</value>
-  </data>
 </root>
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/StateLog/StateLogGanttChartListView.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/StateLog/StateLogGanttChartListView.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/StateLog/StateLogGanttChartListView.cs	(revision 7215)
@@ -56,12 +56,11 @@
       base.OnContentChanged();
       if (Content == null) {
-        // Add code when content has been changed and is null
         ganttChart.Reset();
       } else {
-        // Add code when content has been changed and is not null
         ganttChart.Reset();
         SetupCategories(ganttChart);
         if (Content.Count > 0) {
           DateTime maxValue = Content.Max(x => x.Count > 0 ? x.Max(y => y.DateTime) : DateTime.MinValue);
+          DateTime minValue = Content.Min(x => x.Count > 0 ? x.Min(y => y.DateTime) : DateTime.MinValue);
           DateTime upperLimit;
           if (Content.All(x => x.Count > 0 ? (x.Last().State == TaskState.Finished || x.Last().State == TaskState.Failed || x.Last().State == TaskState.Aborted) : true)) {
@@ -69,4 +68,10 @@
           } else {
             upperLimit = DateTime.Now;
+          }
+
+          if ((upperLimit - minValue) > TimeSpan.FromDays(1)) {
+            this.ganttChart.chart.Series[0].YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Date;
+          } else {
+            this.ganttChart.chart.Series[0].YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Time;
           }
 
@@ -98,5 +103,5 @@
       DateTime until = to != null ? to.DateTime : upperLimit;
       TimeSpan duration = until - from.DateTime;
-      string tooltip = string.Format("State: {0} " + Environment.NewLine + " Duration: {1} " + Environment.NewLine + " {2} - {3}", from.State, duration, from.DateTime, until);
+      string tooltip = string.Format("Task: {0} " + Environment.NewLine + "Task Id: {1}" + Environment.NewLine + "State: {2} " + Environment.NewLine + "Duration: {3} " + Environment.NewLine + "{4} - {5}", from.TaskName, from.TaskId, from.State, duration, from.DateTime, until);
       if (!string.IsNullOrEmpty(from.Exception))
         tooltip += Environment.NewLine + from.Exception;
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/DeleteTaskTreeNodeAction.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/DeleteTaskTreeNodeAction.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/DeleteTaskTreeNodeAction.cs	(revision 7215)
@@ -25,5 +25,5 @@
 using HeuristicLab.Optimization;
 
-namespace HeuristicLab.Clients.Hive.Views.ExperimentManager.TreeView {
+namespace HeuristicLab.Clients.Hive.Views.TreeView {
   public class DeleteTaskTreeNodeAction : IItemTreeNodeAction<HiveTask> {
     private ItemCollection<HiveTask> hiveTasks;
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/HiveTaskItemTreeView.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/HiveTaskItemTreeView.Designer.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/HiveTaskItemTreeView.Designer.cs	(revision 7215)
@@ -20,5 +20,5 @@
 #endregion
 
-namespace HeuristicLab.Clients.Hive.Views.ExperimentManager {
+namespace HeuristicLab.Clients.Hive.Views {
   partial class HiveTaskItemTreeView {
     /// <summary> 
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/HiveTaskItemTreeView.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/HiveTaskItemTreeView.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/HiveTaskItemTreeView.cs	(revision 7215)
@@ -29,5 +29,5 @@
 using HeuristicLab.Optimization;
 
-namespace HeuristicLab.Clients.Hive.Views.ExperimentManager {
+namespace HeuristicLab.Clients.Hive.Views {
   [View("HiveTask ItemTreeView")]
   [Content(typeof(ItemCollection<HiveTask>), IsDefaultView = false)]
@@ -81,4 +81,6 @@
           if (experiment != null) {
             experiment.Optimizers.Add(optimizer);
+          } else {
+            Content.Add(new OptimizerHiveTask(optimizer));
           }
         }
Index: branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/ItemTreeView.cs
===================================================================
--- branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/ItemTreeView.cs	(revision 6988)
+++ branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.Views/3.3/TreeView/ItemTreeView.cs	(revision 7215)
@@ -276,5 +276,5 @@
         }
       }
-      if (idx > 0) {
+      if (idx > -1) {
         DeregisterContentEvents(item, treeNodeCollection[idx]);
         treeNodeCollection.RemoveAt(idx);
