Index: branches/HiveHiveEngine/HeuristicLab.HiveEngine.Views/3.3/HiveEngineView.Designer.cs
===================================================================
--- branches/HiveHiveEngine/HeuristicLab.HiveEngine.Views/3.3/HiveEngineView.Designer.cs	(revision 7401)
+++ branches/HiveHiveEngine/HeuristicLab.HiveEngine.Views/3.3/HiveEngineView.Designer.cs	(revision 7417)
@@ -39,4 +39,5 @@
       this.executionTimeTextBox = new System.Windows.Forms.TextBox();
       this.isPrivilegedCheckBox = new System.Windows.Forms.CheckBox();
+      this.pauseOnWaitCheckbox = new System.Windows.Forms.CheckBox();
       this.tabControl.SuspendLayout();
       this.jobsTabPage.SuspendLayout();
@@ -60,5 +61,5 @@
       this.resourceIdsTextBox.Location = new System.Drawing.Point(189, 52);
       this.resourceIdsTextBox.Name = "resourceIdsTextBox";
-      this.resourceIdsTextBox.Size = new System.Drawing.Size(428, 20);
+      this.resourceIdsTextBox.Size = new System.Drawing.Size(415, 20);
       this.resourceIdsTextBox.TabIndex = 4;
       this.resourceIdsTextBox.Text = "HEAL";
@@ -100,5 +101,5 @@
       this.executionTimeOnHiveTextBox.Name = "executionTimeOnHiveTextBox";
       this.executionTimeOnHiveTextBox.ReadOnly = true;
-      this.executionTimeOnHiveTextBox.Size = new System.Drawing.Size(577, 20);
+      this.executionTimeOnHiveTextBox.Size = new System.Drawing.Size(475, 20);
       this.executionTimeOnHiveTextBox.TabIndex = 8;
       // 
@@ -135,4 +136,5 @@
       this.hiveExperimentListView.Name = "hiveExperimentListView";
       this.hiveExperimentListView.ReadOnly = false;
+      this.hiveExperimentListView.ShowDetails = true;
       this.hiveExperimentListView.Size = new System.Drawing.Size(686, 428);
       this.hiveExperimentListView.TabIndex = 0;
@@ -184,5 +186,5 @@
       this.isPrivilegedCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
       this.isPrivilegedCheckBox.AutoSize = true;
-      this.isPrivilegedCheckBox.Location = new System.Drawing.Point(623, 54);
+      this.isPrivilegedCheckBox.Location = new System.Drawing.Point(610, 54);
       this.isPrivilegedCheckBox.Name = "isPrivilegedCheckBox";
       this.isPrivilegedCheckBox.Size = new System.Drawing.Size(80, 17);
@@ -192,8 +194,21 @@
       this.isPrivilegedCheckBox.Validated += new System.EventHandler(this.isPrivilegedCheckBox_Validated);
       // 
+      // pauseOnWaitCheckbox
+      // 
+      this.pauseOnWaitCheckbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.pauseOnWaitCheckbox.AutoSize = true;
+      this.pauseOnWaitCheckbox.Location = new System.Drawing.Point(610, 28);
+      this.pauseOnWaitCheckbox.Name = "pauseOnWaitCheckbox";
+      this.pauseOnWaitCheckbox.Size = new System.Drawing.Size(93, 17);
+      this.pauseOnWaitCheckbox.TabIndex = 14;
+      this.pauseOnWaitCheckbox.Text = "Pause on wait";
+      this.pauseOnWaitCheckbox.UseVisualStyleBackColor = true;
+      this.pauseOnWaitCheckbox.Validated += new System.EventHandler(this.pauseOnWaitCheckbox_Validated);
+      // 
       // HiveEngineView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.pauseOnWaitCheckbox);
       this.Controls.Add(this.isPrivilegedCheckBox);
       this.Controls.Add(this.executionTimeTextBox);
@@ -232,4 +247,5 @@
     private RefreshableHiveJobListView hiveExperimentListView;
     private System.Windows.Forms.CheckBox isPrivilegedCheckBox;
+    private System.Windows.Forms.CheckBox pauseOnWaitCheckbox;
   }
 }
Index: branches/HiveHiveEngine/HeuristicLab.HiveEngine.Views/3.3/HiveEngineView.cs
===================================================================
--- branches/HiveHiveEngine/HeuristicLab.HiveEngine.Views/3.3/HiveEngineView.cs	(revision 7401)
+++ branches/HiveHiveEngine/HeuristicLab.HiveEngine.Views/3.3/HiveEngineView.cs	(revision 7417)
@@ -74,4 +74,5 @@
         executionTimeOnHiveTextBox.Text = string.Empty;
         isPrivilegedCheckBox.Checked = false;
+        pauseOnWaitCheckbox.Checked = true;
         hiveExperimentListView.Content = null;
         logView.Content = null;
@@ -83,4 +84,5 @@
         hiveExperimentListView.Content = Content.Jobs;
         logView.Content = Content.Log;
+        pauseOnWaitCheckbox.Checked = Content.PauseWhileCalculatingChilds;
       }
     }
@@ -112,4 +114,8 @@
       Content.IsPrivileged = isPrivilegedCheckBox.Checked;
     }
+
+    private void pauseOnWaitCheckbox_Validated(object sender, EventArgs e) {
+      Content.PauseWhileCalculatingChilds = pauseOnWaitCheckbox.Checked;
+    }
     #endregion
   }
Index: branches/HiveHiveEngine/HeuristicLab.HiveEngine/3.3/HiveEngine.cs
===================================================================
--- branches/HiveHiveEngine/HeuristicLab.HiveEngine/3.3/HiveEngine.cs	(revision 7401)
+++ branches/HiveHiveEngine/HeuristicLab.HiveEngine/3.3/HiveEngine.cs	(revision 7417)
@@ -47,4 +47,7 @@
 
     [Storable]
+    public bool PauseWhileCalculatingChilds { get; set; }
+
+    [Storable]
     private IOperator currentOperator;
 
@@ -131,4 +134,5 @@
       username = cl.ClientCredentials.UserName.UserName;
       password = cl.ClientCredentials.UserName.Password;
+      PauseWhileCalculatingChilds = true;
     }
 
@@ -157,4 +161,5 @@
       this.nrOfSentRuns = original.nrOfSentRuns;
       this.ParentTaskId = original.ParentTaskId;
+      this.PauseWhileCalculatingChilds = original.PauseWhileCalculatingChilds;
       // do not clone jobs - otherwise they would be sent with every task
     }
@@ -200,5 +205,5 @@
         cancellationToken.ThrowIfCancellationRequested();
 
-        if (continueCollection != null && lastJobGuid != Guid.Empty) {
+        if (continueCollection != null && lastJobGuid != Guid.Empty && PauseWhileCalculatingChilds) {
           EngineTask[] eTasks = RetrieveResultsFromHive(lastJobGuid);
           RestoreStateFromExecutedHiveTasks(eTasks, continueCollection);
@@ -224,7 +229,11 @@
 
               var experiment = CreateJob();
-              ExecuteOnHive(experiment, tasks, parentScopeClone, new CancellationToken());
-              continueCollection = coll;
-              Pause();
+              var engineTasks = ExecuteOnHive(experiment, tasks, parentScopeClone, new CancellationToken());
+              if (PauseWhileCalculatingChilds) {
+                continueCollection = coll;
+                Pause();
+              } else {
+                RestoreStateFromExecutedHiveTasks(engineTasks, coll);
+              }
             }
             catch {
@@ -304,9 +313,8 @@
 
     /// <summary>
-    /// This method blocks until all jobs are finished
     /// TODO: Cancelation needs to be refined; all tasks currently stay in Semaphore.WaitOne after cancelation
     /// </summary>
     /// <param name="tasks"></param>
-    private void ExecuteOnHive(RefreshableJob refreshableJob, EngineTask[] tasks, IScope parentScopeClone, CancellationToken cancellationToken) {
+    private EngineTask[] ExecuteOnHive(RefreshableJob refreshableJob, EngineTask[] tasks, IScope parentScopeClone, CancellationToken cancellationToken) {
       log.LogMessage(string.Format("Executing {0} operations on the hive.", tasks.Length));
       IScope[] scopes = new Scope[tasks.Length];
@@ -319,5 +327,5 @@
           var engineHiveTask = new EngineHiveTask(tasks[i], parentScopeClone);
           engineHiveTask.Task.Priority = this.Priority;
-          if (ParentTaskId != Guid.Empty) {
+          if (ParentTaskId != Guid.Empty && PauseWhileCalculatingChilds) {
             engineHiveTask.Task.ParentTaskId = ParentTaskId;
           }
@@ -325,7 +333,7 @@
 
           // shuffle random variable to avoid the same random sequence in each operation; todo: does not yet work (it cannot find the random variable)
-          IRandom random = FindRandomParameter(tasks[i].InitialOperation as IExecutionContext);
-          if (random != null)
-            random.Reset(random.Next());
+          //IRandom random = FindRandomParameter(tasks[i].InitialOperation as IExecutionContext);
+          //if (random != null)
+          //random.Reset(random.Next());
         }
         HiveClient.StartJob((e) => { log.LogException(e); }, refreshableJob, cancellationToken);
@@ -338,4 +346,33 @@
         handle.WaitOne();
         refreshableJob.Progress.Finished -= new EventHandler(Progress_Finished);
+
+        if (!PauseWhileCalculatingChilds) {
+
+          while (!refreshableJob.AllJobsFinished()) {
+            Thread.Sleep(1000);
+          }
+
+          List<HiveTask> allHiveTasks = refreshableJob.HiveTasks.ToList();
+          allHiveTasks.ForEach(x => this.ExecutionTimeOnHive += x.Task.ExecutionTime);
+
+          var failedJobs = allHiveTasks.Where(x => x.Task.State != TaskState.Finished);
+          if (failedJobs.Count() > 0) {
+            throw new HiveEngineException("Task (" + failedJobs.First().Task.Id + ") failed: " + failedJobs.First().Task.StateLog.Last().Exception);
+          }
+
+          List<EngineTask> engineTasks = new List<EngineTask>();
+
+          foreach (var hTask in allHiveTasks) {
+            EngineTask ehTask = (EngineTask)hTask.ItemTask;
+            engineTasks.Add(ehTask);
+          }
+
+          jobs.Clear();
+          DeleteHiveExperiment(refreshableJob.Id);
+
+          return engineTasks.ToArray();
+        } else {
+          return null;
+        }
       }
       catch (OperationCanceledException e) {
