Index: branches/HeuristicLab.DebugEngine/Build.cmd
===================================================================
--- branches/HeuristicLab.DebugEngine/Build.cmd	(revision 4903)
+++ branches/HeuristicLab.DebugEngine/Build.cmd	(revision 4903)
@@ -0,0 +1,48 @@
+@ECHO OFF
+
+SET /A COUNT=0
+FOR /F "tokens=*" %%A IN ('dir /B *.sln') DO (
+  CALL :forloopbody "%%A")
+
+IF "%COUNT%"=="1" (
+  SET SELECTED=%SOLUTIONS.1%
+  ECHO Building %SOLUTIONS.1% as it is the only solution that was found ...
+  GOTO :config_platform_selection)
+
+ECHO Found the following solutions:
+FOR /F "tokens=2* delims=.=" %%A IN ('SET SOLUTIONS.') DO ECHO %%A = %%B
+ECHO.
+SET /P SOLUTIONINDEX=Which solution to build (type the number): 
+
+SET SELECTED=""
+FOR /F "tokens=2* delims=.=" %%A IN ('SET SOLUTIONS.') DO (
+IF "%%A"=="%SOLUTIONINDEX%" SET SELECTED=%%B)
+
+IF %SELECTED%=="" GOTO :eof
+
+:config_platform_selection
+SET /P CONFIGURATION=Which configuration to build [Debug]: 
+IF "%CONFIGURATION%"=="" SET CONFIGURATION=Debug
+SET /P PLATFORM=Which platform to build [Any CPU]: 
+IF "%PLATFORM%"=="" SET PLATFORM=Any CPU
+
+REM First find the path to the msbuild.exe by performing a registry query
+FOR /F "tokens=1,3 delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0"') DO (
+  IF "%%A"=="MSBuildToolsPath" SET MSBUILDPATH=%%B)
+
+REM Then execute msbuild to clean and build the solution
+REM Disable that msbuild creates a cache file of the solution
+SET MSBuildUseNoSolutionCache=1
+REM Run msbuild to clean and then build
+%MSBUILDPATH%msbuild.exe %SELECTED% /target:Clean /p:Configuration="%CONFIGURATION%",Platform="%PLATFORM%" /nologo
+%MSBUILDPATH%msbuild.exe %SELECTED% /target:Build /p:Configuration="%CONFIGURATION%",Platform="%PLATFORM%" /nologo
+
+PAUSE
+
+GOTO :eof
+
+REM This workaround is necessary so that COUNT gets reevaluated
+:forloopbody
+SET /A COUNT+=1
+SET SOLUTIONS.%COUNT%=%1
+GOTO :eof
Index: branches/HeuristicLab.DebugEngine/DebugEngine.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngine.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/DebugEngine.cs	(revision 4903)
@@ -22,10 +22,8 @@
 using System;
 using System.Linq;
-using System.Collections.Generic;
+using System.Threading;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Collections;
-using System.Threading;
 
 namespace HeuristicLab.DebugEngine {
@@ -35,9 +33,9 @@
   public class DebugEngine : Executable, IEngine {
 
-
     #region Construction and Cloning
-    
+
     [StorableConstructor]
-    protected DebugEngine(bool deserializing) : base(deserializing) {
+    protected DebugEngine(bool deserializing)
+      : base(deserializing) {
       pausePending = stopPending = false;
       timer = new System.Timers.Timer(100);
@@ -45,5 +43,6 @@
       timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
     }
-    protected DebugEngine(DebugEngine original, Cloner cloner) : base(original, cloner) {
+    protected DebugEngine(DebugEngine original, Cloner cloner)
+      : base(original, cloner) {
       if (original.ExecutionState == ExecutionState.Started) throw new InvalidOperationException(string.Format("Clone not allowed in execution state \"{0}\".", ExecutionState));
       Log = cloner.Clone(original.Log);
@@ -84,5 +83,5 @@
     private DateTime lastUpdateTime;
     private System.Timers.Timer timer;
-      
+
     [Storable]
     private IOperator currentOperator;
@@ -108,5 +107,5 @@
 
     public virtual IExecutionContext CurrentExecutionContext {
-      get { return CurrentOperation as IExecutionContext;  }
+      get { return CurrentOperation as IExecutionContext; }
     }
 
@@ -153,5 +152,5 @@
       ignoreNextBreakpoint = true;
       timer.Start();
-      ProcessNextOperation();      
+      ProcessNextOperation();
       timer.Stop();
       ExecutionTime += DateTime.Now - lastUpdateTime;
@@ -165,5 +164,5 @@
       ThreadPool.QueueUserWorkItem(new WaitCallback(Run), null);
     }
-    
+
     protected override void OnStarted() {
       Log.LogMessage("Engine started");
@@ -190,5 +189,5 @@
       if (ExecutionState == ExecutionState.Paused) OnStopped();
     }
-    
+
     protected override void OnStopped() {
       Log.LogMessage("Engine stopped");
Index: branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs	(revision 4903)
@@ -56,4 +56,6 @@
       this.stepButton = new System.Windows.Forms.Button();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.refreshButton = new System.Windows.Forms.Button();
+      this.skipStackOpsCheckBox = new System.Windows.Forms.CheckBox();
       this.splitContainer1.Panel1.SuspendLayout();
       this.splitContainer1.Panel2.SuspendLayout();
@@ -80,5 +82,5 @@
       this.executionTimeTextBox.Name = "executionTimeTextBox";
       this.executionTimeTextBox.ReadOnly = true;
-      this.executionTimeTextBox.Size = new System.Drawing.Size(747, 20);
+      this.executionTimeTextBox.Size = new System.Drawing.Size(611, 20);
       this.executionTimeTextBox.TabIndex = 1;
       // 
@@ -157,5 +159,5 @@
       this.stepButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
       this.stepButton.Image = ((System.Drawing.Image)(resources.GetObject("stepButton.Image")));
-      this.stepButton.Location = new System.Drawing.Point(845, 3);
+      this.stepButton.Location = new System.Drawing.Point(815, 3);
       this.stepButton.Name = "stepButton";
       this.stepButton.Size = new System.Drawing.Size(24, 24);
@@ -165,7 +167,31 @@
       this.stepButton.Click += new System.EventHandler(this.stepButton_Click);
       // 
+      // refreshButton
+      // 
+      this.refreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.refreshButton.Image = ((System.Drawing.Image)(resources.GetObject("refreshButton.Image")));
+      this.refreshButton.Location = new System.Drawing.Point(845, 3);
+      this.refreshButton.Name = "refreshButton";
+      this.refreshButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshButton.TabIndex = 5;
+      this.refreshButton.UseVisualStyleBackColor = true;
+      this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click);
+      // 
+      // skipStackOpsCheckBox
+      // 
+      this.skipStackOpsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.skipStackOpsCheckBox.AutoSize = true;
+      this.skipStackOpsCheckBox.Location = new System.Drawing.Point(709, 8);
+      this.skipStackOpsCheckBox.Name = "skipStackOpsCheckBox";
+      this.skipStackOpsCheckBox.Size = new System.Drawing.Size(100, 17);
+      this.skipStackOpsCheckBox.TabIndex = 6;
+      this.skipStackOpsCheckBox.Text = "Skip Stack Ops";
+      this.skipStackOpsCheckBox.UseVisualStyleBackColor = true;
+      // 
       // DebugEngineView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.Controls.Add(this.skipStackOpsCheckBox);
+      this.Controls.Add(this.refreshButton);
       this.Controls.Add(this.splitContainer2);
       this.Controls.Add(this.stepButton);
@@ -196,4 +222,6 @@
     private HeuristicLab.DebugEngine.ExecutionStackView executionStackView;
     private HeuristicLab.DebugEngine.OperationContentView operationContentView;
+    private System.Windows.Forms.Button refreshButton;
+    private System.Windows.Forms.CheckBox skipStackOpsCheckBox;
 
   }
Index: branches/HeuristicLab.DebugEngine/DebugEngineView.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngineView.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/DebugEngineView.cs	(revision 4903)
@@ -21,12 +21,8 @@
 
 using System;
-using System.Collections.Generic;
-using System.Drawing;
 using System.Windows.Forms;
-using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
-using HeuristicLab.Persistence.Auxiliary;
 namespace HeuristicLab.DebugEngine {
 
@@ -124,6 +120,10 @@
       else {
         switch (Content.ExecutionState) {
-          case ExecutionState.Started: executionStackView.SuspendUpdate(); break;
+          case ExecutionState.Started:
+            executionStackView.SuspendUpdate();
+            logView.Content = null;
+            break;
           default:
+            logView.Content = Content.Log;
             executionStackView.ResumeUpdate();
             operationContentView.Content = new OperationContent(Content.CurrentOperation);
@@ -145,4 +145,12 @@
     private void stepButton_Click(object sender, EventArgs e) {
       Content.Step();
+      while (skipStackOpsCheckBox.Checked && !(Content.CurrentOperation is IAtomicOperation) && Content.CanContinue)
+        Content.Step();
+    }
+
+    private void refreshButton_Click(object sender, EventArgs e) {
+      var content = Content;
+      Content = null;
+      Content = content;
     }
 
Index: branches/HeuristicLab.DebugEngine/DebugEngineView.resx
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngineView.resx	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/DebugEngineView.resx	(revision 4903)
@@ -122,6 +122,6 @@
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALDAAA
-        CwwBP0AiyAAAARBJREFUOE9j+P//PwM6Tuh5woxNHJsYhmaQIqABMkDMRIwhWA0onPX8f/zkt0rEGILV
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALCwAA
+        CwsBbQSEtwAAARBJREFUOE9j+P//PwM6Tuh5woxNHJsYhmaQIqABMkDMRIwhWA0onPX8f/zkt0rEGILV
         gNyZz/4ndN/7HzfhtQYh72A1IGPK0//z9v/+H9Rw8zXQAFt8huAKg/+z9/3637n173+30sv/gQbY4zIE
         qwGRXY/+T9n263/J0r//E6b//W+TexanIVgNCGx++L917XuwZuOSL/+lo6/9N45c9t+h6Gw8ukuwGuBR
@@ -134,3 +134,20 @@
     <value>17, 17</value>
   </metadata>
+  <data name="refreshButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEQAA
+        CxEBf2RfkQAAAmFJREFUOE+dk21IU1EYx3cVVzkhaLCy+UaY0xwlZkYRmiGR7oMEUlAGfRGKvkRFVOQ0
+        DddsVmtbvpQWhCFBSvaCUcRAk0gGm8SGM7JtrU1nzYFvu3P33znDRcLpSxceDvdefr/zv+d5Lidaufjg
+        QKKIWwNSUo4Tz4u4RAl5xYsgJIuEcADCYlS8oQKLvvvKdam1n+PcqjUyN5ox7PyIVrMB1U9PoKxThZI7
+        h3C1vwk2l2OWD40c15nbwITD/h5p/9hrVL2sgXpSA43bgGsOHeodLTj16QJK71XCOmlH3u1dbIHDOxGk
+        8PXJW1D1HYWsfgs2NW3FSfOZmKjBcTMmydLmswWXnjegZvg0dusPoHXQiDH3OJw+F9IaFbFU8UptymYL
+        DncdQ0lHBfosrxBZFvL5ZUEyFfgFm2d8lURal8kWFHeU4eIzNYULSHF8ROB6LQPI1CiRrskF3ZnC6y/L
+        2YIdxr0Y/WqDf/pnEj1lry+Q5vkxlfTdN73W6w+IyX2Cy+PfOP7FxRaQHbFSB8maGOaFfR7vFLcYjiYs
+        LEW5eVJzC1GJekjLFhR2lWJ72x7k3i0KZrUoQ/JmBdpHHmOJj0ppIiIpbx96iDzjP9q4s6sEWrcp1rJs
+        XQEsLjv9HJAE6TSF1eVE5ZNqbK7LYSfYZir+I6AShb4Ilm92MoET6BzuiU0lbWXto7NsAYmNnBuFq3pO
+        oThIYblagQfve9mCjOZ8vLC+hZwMzt9QfIAorHljQGA2sp/5L7S96wY5KHxwWHCltxEq0xGknJch5ZwM
+        5foqGAe7MROKJHtn+ASm4H8f/gZt6J11yfCrBQAAAABJRU5ErkJggg==
+</value>
+  </data>
 </root>
Index: branches/HeuristicLab.DebugEngine/ExecutionStackView.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/ExecutionStackView.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/ExecutionStackView.cs	(revision 4903)
@@ -1,14 +1,11 @@
 ﻿using System;
 using System.Collections.Generic;
-using System.ComponentModel;
 using System.Drawing;
-using System.Data;
 using System.Linq;
-using System.Text;
 using System.Windows.Forms;
 using HeuristicLab.Collections;
 using HeuristicLab.Core;
+using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.MainForm;
 
 namespace HeuristicLab.DebugEngine {
@@ -51,5 +48,5 @@
         UpdateExecutionStack();
     }
-    
+
 
     private void UpdateExecutionStack() {
@@ -60,4 +57,5 @@
         if (treeView.Nodes.Count > 0)
           treeView.TopNode = treeView.Nodes[0];
+        treeView.ExpandAll();
         treeView.EndUpdate();
         groupBox.Text = string.Format("Execution Stack ({0})", totalNodes);
@@ -118,5 +116,5 @@
     }
 
-    
+
 
     #region Event Handlers (child controls)
Index: branches/HeuristicLab.DebugEngine/OperationContentView.Designer.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/OperationContentView.Designer.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/OperationContentView.Designer.cs	(revision 4903)
@@ -27,5 +27,10 @@
       this.groupBox = new System.Windows.Forms.GroupBox();
       this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+      this.executionContextGroupBox = new System.Windows.Forms.GroupBox();
+      this.executionContextTreeView = new System.Windows.Forms.TreeView();
+      this.parametersGroupBox = new System.Windows.Forms.GroupBox();
       this.parameterListView = new System.Windows.Forms.ListView();
+      this.scopeGroupBox = new System.Windows.Forms.GroupBox();
       this.scopeTreeView = new System.Windows.Forms.TreeView();
       this.nameTextBox = new System.Windows.Forms.TextBox();
@@ -33,9 +38,4 @@
       this.atomicLabel = new System.Windows.Forms.Label();
       this.collectionLabel = new System.Windows.Forms.Label();
-      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
-      this.parametersGroupBox = new System.Windows.Forms.GroupBox();
-      this.executionContextGroupBox = new System.Windows.Forms.GroupBox();
-      this.scopeGroupBox = new System.Windows.Forms.GroupBox();
-      this.executionContextTreeView = new System.Windows.Forms.TreeView();
       this.timer = new System.Windows.Forms.Timer(this.components);
       this.groupBox.SuspendLayout();
@@ -46,6 +46,6 @@
       this.splitContainer2.Panel2.SuspendLayout();
       this.splitContainer2.SuspendLayout();
+      this.executionContextGroupBox.SuspendLayout();
       this.parametersGroupBox.SuspendLayout();
-      this.executionContextGroupBox.SuspendLayout();
       this.scopeGroupBox.SuspendLayout();
       this.SuspendLayout();
@@ -85,4 +85,54 @@
       this.splitContainer1.TabIndex = 4;
       // 
+      // splitContainer2
+      // 
+      this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer2.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer2.Name = "splitContainer2";
+      this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.executionContextGroupBox);
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.parametersGroupBox);
+      this.splitContainer2.Size = new System.Drawing.Size(242, 361);
+      this.splitContainer2.SplitterDistance = 180;
+      this.splitContainer2.TabIndex = 1;
+      // 
+      // executionContextGroupBox
+      // 
+      this.executionContextGroupBox.Controls.Add(this.executionContextTreeView);
+      this.executionContextGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.executionContextGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.executionContextGroupBox.Name = "executionContextGroupBox";
+      this.executionContextGroupBox.Size = new System.Drawing.Size(242, 180);
+      this.executionContextGroupBox.TabIndex = 0;
+      this.executionContextGroupBox.TabStop = false;
+      this.executionContextGroupBox.Text = "Execution Context";
+      // 
+      // executionContextTreeView
+      // 
+      this.executionContextTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.executionContextTreeView.Location = new System.Drawing.Point(3, 16);
+      this.executionContextTreeView.Name = "executionContextTreeView";
+      this.executionContextTreeView.Size = new System.Drawing.Size(236, 161);
+      this.executionContextTreeView.TabIndex = 0;
+      this.executionContextTreeView.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.executionContextTreeView_NodeMouseClick);
+      this.executionContextTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.executionContextTreeView_NodeMouseDoubleClick);
+      // 
+      // parametersGroupBox
+      // 
+      this.parametersGroupBox.Controls.Add(this.parameterListView);
+      this.parametersGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.parametersGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.parametersGroupBox.Name = "parametersGroupBox";
+      this.parametersGroupBox.Size = new System.Drawing.Size(242, 177);
+      this.parametersGroupBox.TabIndex = 0;
+      this.parametersGroupBox.TabStop = false;
+      this.parametersGroupBox.Text = "Parameters";
+      // 
       // parameterListView
       // 
@@ -97,4 +147,15 @@
       this.parameterListView.ItemActivate += new System.EventHandler(this.parameterListView_ItemActivate);
       // 
+      // scopeGroupBox
+      // 
+      this.scopeGroupBox.Controls.Add(this.scopeTreeView);
+      this.scopeGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scopeGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.scopeGroupBox.Name = "scopeGroupBox";
+      this.scopeGroupBox.Size = new System.Drawing.Size(305, 361);
+      this.scopeGroupBox.TabIndex = 1;
+      this.scopeGroupBox.TabStop = false;
+      this.scopeGroupBox.Text = "Scope";
+      // 
       // scopeTreeView
       // 
@@ -109,4 +170,5 @@
       this.nameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
+      this.nameTextBox.Cursor = System.Windows.Forms.Cursors.Default;
       this.nameTextBox.Location = new System.Drawing.Point(6, 19);
       this.nameTextBox.Name = "nameTextBox";
@@ -114,4 +176,5 @@
       this.nameTextBox.Size = new System.Drawing.Size(395, 20);
       this.nameTextBox.TabIndex = 3;
+      this.nameTextBox.DoubleClick += new System.EventHandler(this.nameTextBox_DoubleClick);
       // 
       // contextLabel
@@ -147,65 +210,4 @@
       this.collectionLabel.TabIndex = 0;
       this.collectionLabel.Text = "Collection";
-      // 
-      // splitContainer2
-      // 
-      this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer2.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer2.Name = "splitContainer2";
-      this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
-      // 
-      // splitContainer2.Panel1
-      // 
-      this.splitContainer2.Panel1.Controls.Add(this.executionContextGroupBox);
-      // 
-      // splitContainer2.Panel2
-      // 
-      this.splitContainer2.Panel2.Controls.Add(this.parametersGroupBox);
-      this.splitContainer2.Size = new System.Drawing.Size(242, 361);
-      this.splitContainer2.SplitterDistance = 180;
-      this.splitContainer2.TabIndex = 1;
-      // 
-      // parametersGroupBox
-      // 
-      this.parametersGroupBox.Controls.Add(this.parameterListView);
-      this.parametersGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.parametersGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.parametersGroupBox.Name = "parametersGroupBox";
-      this.parametersGroupBox.Size = new System.Drawing.Size(242, 177);
-      this.parametersGroupBox.TabIndex = 0;
-      this.parametersGroupBox.TabStop = false;
-      this.parametersGroupBox.Text = "Parameters";
-      // 
-      // executionContextGroupBox
-      // 
-      this.executionContextGroupBox.Controls.Add(this.executionContextTreeView);
-      this.executionContextGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.executionContextGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.executionContextGroupBox.Name = "executionContextGroupBox";
-      this.executionContextGroupBox.Size = new System.Drawing.Size(242, 180);
-      this.executionContextGroupBox.TabIndex = 0;
-      this.executionContextGroupBox.TabStop = false;
-      this.executionContextGroupBox.Text = "Execution Context";
-      // 
-      // scopeGroupBox
-      // 
-      this.scopeGroupBox.Controls.Add(this.scopeTreeView);
-      this.scopeGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scopeGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.scopeGroupBox.Name = "scopeGroupBox";
-      this.scopeGroupBox.Size = new System.Drawing.Size(305, 361);
-      this.scopeGroupBox.TabIndex = 1;
-      this.scopeGroupBox.TabStop = false;
-      this.scopeGroupBox.Text = "Scope";
-      // 
-      // executionContextTreeView
-      // 
-      this.executionContextTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.executionContextTreeView.Location = new System.Drawing.Point(3, 16);
-      this.executionContextTreeView.Name = "executionContextTreeView";
-      this.executionContextTreeView.Size = new System.Drawing.Size(236, 161);
-      this.executionContextTreeView.TabIndex = 0;
-      this.executionContextTreeView.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.executionContextTreeView_NodeMouseClick);
-      this.executionContextTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.executionContextTreeView_NodeMouseDoubleClick);
       // 
       // timer
@@ -229,6 +231,6 @@
       this.splitContainer2.Panel2.ResumeLayout(false);
       this.splitContainer2.ResumeLayout(false);
+      this.executionContextGroupBox.ResumeLayout(false);
       this.parametersGroupBox.ResumeLayout(false);
-      this.executionContextGroupBox.ResumeLayout(false);
       this.scopeGroupBox.ResumeLayout(false);
       this.ResumeLayout(false);
Index: branches/HeuristicLab.DebugEngine/OperationContentView.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/OperationContentView.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/OperationContentView.cs	(revision 4903)
@@ -1,14 +1,11 @@
 ﻿using System;
 using System.Collections.Generic;
-using System.ComponentModel;
 using System.Drawing;
-using System.Data;
-using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.MainForm;
-using HeuristicLab.Core;
-using HeuristicLab.Common;
 
 namespace HeuristicLab.DebugEngine {
@@ -61,15 +58,11 @@
 
     private object GetParameterValue(IParameter param, IExecutionContext context) {
-      var originalContext = param.ExecutionContext;
+      param = (IParameter)param.Clone();
       param.ExecutionContext = context;
       object value = null;
       try {
-        try {
-          value = param.ActualValue;
-        } catch (Exception x) {
-          value = x;
-        }
-      } finally {
-        param.ExecutionContext = originalContext;
+        value = param.ActualValue;
+      } catch (Exception x) {
+        value = x.Message;
       }
       return value;
@@ -83,12 +76,8 @@
         while (scope != null && scope.Parent != null)
           scope = scope.Parent;
-        UpdateScope(scope);
-      }
-      scopeTreeView.EndUpdate();
-    }
-
-    private void UpdateScope(IScope scope) {
-      if (scope != null) {
-        AddScope(scopeTreeView.Nodes, scope);
+        if (scope != null)
+          AddScope(scopeTreeView.Nodes, scope);
+        if (scopeTreeView.Nodes.Count > 0)
+          scopeTreeView.TopNode = scopeTreeView.Nodes[0];
       }
       scopeTreeView.ExpandAll();
@@ -99,5 +88,5 @@
 
     private void AddScope(TreeNodeCollection nodes, IScope scope) {
-      TreeNode node = nodes.Add(scope.Name);
+      TreeNode node = nodes.Add(string.Format("{0} ({1}+{2})", scope.Name, scope.Variables.Count, scope.SubScopes.Count));
       node.Tag = scope;
       if (Content.IsAtomic && Content.AtomicOperation.Scope == scope) {
@@ -121,4 +110,7 @@
         AddExecutionContext(Content.ExecutionContext, executionContextTreeView.Nodes);
       }
+      executionContextTreeView.ExpandAll();
+      if (executionContextTreeView.Nodes.Count > 0)
+        executionContextTreeView.TopNode = executionContextTreeView.Nodes[0];
       executionContextTreeView.EndUpdate();
     }
@@ -206,4 +198,10 @@
 
     #endregion
+
+    private void nameTextBox_DoubleClick(object sender, EventArgs e) {
+      if (Content != null && Content.IsAtomic && Content.AtomicOperation.Operator != null)
+        MainFormManager.MainForm.ShowContent(Content.AtomicOperation.Operator);
+    }
+
   }
 }
