Index: /branches/HeuristicLab.DebugEngine/DebugEngine.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/DebugEngine.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/DebugEngine.cs	(revision 4909)
@@ -162,5 +162,5 @@
     }
 
-    public virtual void Step() {
+    public virtual void Step(bool skipStackOperations) {
       OnStarted();
       lastUpdateTime = DateTime.Now;
@@ -168,4 +168,6 @@
       timer.Start();
       ProcessNextOperation();
+      while (skipStackOperations && !(CurrentOperation is IAtomicOperation) && CanContinue)
+        ProcessNextOperation();
       timer.Stop();
       ExecutionTime += DateTime.Now - lastUpdateTime;
Index: /branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs	(revision 4909)
@@ -47,74 +47,44 @@
       this.components = new System.ComponentModel.Container();
       System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DebugEngineView));
-      this.label1 = new System.Windows.Forms.Label();
-      this.executionTimeTextBox = new System.Windows.Forms.TextBox();
-      this.operationContentView = new OperationContentView();
-      this.logView = new HeuristicLab.Core.Views.LogView();
-      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.operationContentView = new HeuristicLab.DebugEngine.OperationContentView();
+      this.executionStackView = new HeuristicLab.DebugEngine.ExecutionStackView();
       this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+      this.refreshButton = new System.Windows.Forms.Button();
+      this.skipStackOpsCheckBox = new System.Windows.Forms.CheckBox();
       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.splitContainer3 = new System.Windows.Forms.SplitContainer();
-      this.executionStackView = new HeuristicLab.DebugEngine.ExecutionStackView();
-      this.operatorTraceView = new OperatorTraceView();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
+      this.operatorTraceView = new HeuristicLab.DebugEngine.OperatorTraceView();
       this.splitContainer2.Panel1.SuspendLayout();
       this.splitContainer2.Panel2.SuspendLayout();
       this.splitContainer2.SuspendLayout();
       this.splitContainer3.Panel1.SuspendLayout();
+      this.splitContainer3.Panel2.SuspendLayout();
       this.splitContainer3.SuspendLayout();
       this.SuspendLayout();
       // 
-      // label1
-      // 
-      this.label1.AutoSize = true;
-      this.label1.Location = new System.Drawing.Point(3, 9);
-      this.label1.Name = "label1";
-      this.label1.Size = new System.Drawing.Size(83, 13);
-      this.label1.TabIndex = 0;
-      this.label1.Text = "Execution Time:";
-      // 
-      // executionTimeTextBox
-      // 
-      this.executionTimeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      // operationContentView
+      // 
+      this.operationContentView.Caption = "Operation Content View";
+      this.operationContentView.Content = null;
+      this.operationContentView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.operationContentView.Location = new System.Drawing.Point(0, 0);
+      this.operationContentView.Name = "operationContentView";
+      this.operationContentView.ReadOnly = false;
+      this.operationContentView.Size = new System.Drawing.Size(484, 538);
+      this.operationContentView.TabIndex = 0;
+      // 
+      // executionStackView
+      // 
+      this.executionStackView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.executionTimeTextBox.Location = new System.Drawing.Point(92, 6);
-      this.executionTimeTextBox.Name = "executionTimeTextBox";
-      this.executionTimeTextBox.ReadOnly = true;
-      this.executionTimeTextBox.Size = new System.Drawing.Size(611, 20);
-      this.executionTimeTextBox.TabIndex = 1;
-      // 
-      // logView
-      // 
-      this.logView.Caption = "Log View";
-      this.logView.Content = null;
-      this.logView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.logView.Location = new System.Drawing.Point(0, 0);
-      this.logView.Name = "logView";
-      this.logView.ReadOnly = false;
-      this.logView.Size = new System.Drawing.Size(198, 237);
-      this.logView.TabIndex = 2;
-      // 
-      // splitContainer1
-      // 
-      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer1.Name = "splitContainer1";
-      this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
-      // 
-      // splitContainer1.Panel1
-      // 
-      this.splitContainer1.Panel1.Controls.Add(this.executionStackView);
-      // 
-      // splitContainer1.Panel2
-      // 
-      this.splitContainer1.Panel2.Controls.Add(this.logView);
-      this.splitContainer1.Size = new System.Drawing.Size(198, 502);
-      this.splitContainer1.SplitterDistance = 261;
-      this.splitContainer1.TabIndex = 3;
+      this.executionStackView.Caption = "Execution Stack View";
+      this.executionStackView.Content = null;
+      this.executionStackView.Location = new System.Drawing.Point(0, 0);
+      this.executionStackView.Name = "executionStackView";
+      this.executionStackView.ReadOnly = false;
+      this.executionStackView.Size = new System.Drawing.Size(197, 505);
+      this.executionStackView.TabIndex = 0;
       // 
       // splitContainer2
@@ -126,18 +96,45 @@
       // splitContainer2.Panel1
       // 
-      this.splitContainer2.Panel1.Controls.Add(this.splitContainer1);
+      this.splitContainer2.Panel1.Controls.Add(this.executionStackView);
+      this.splitContainer2.Panel1.Controls.Add(this.refreshButton);
+      this.splitContainer2.Panel1.Controls.Add(this.skipStackOpsCheckBox);
+      this.splitContainer2.Panel1.Controls.Add(this.stepButton);
       // 
       // splitContainer2.Panel2
       // 
       this.splitContainer2.Panel2.Controls.Add(this.operationContentView);
-      this.splitContainer2.Size = new System.Drawing.Size(683, 502);
-      this.splitContainer2.SplitterDistance = 198;
+      this.splitContainer2.Size = new System.Drawing.Size(687, 538);
+      this.splitContainer2.SplitterDistance = 199;
       this.splitContainer2.TabIndex = 0;
       // 
+      // refreshButton
+      // 
+      this.refreshButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.refreshButton.Image = ((System.Drawing.Image)(resources.GetObject("refreshButton.Image")));
+      this.refreshButton.Location = new System.Drawing.Point(3, 511);
+      this.refreshButton.Name = "refreshButton";
+      this.refreshButton.Size = new System.Drawing.Size(24, 24);
+      this.refreshButton.TabIndex = 5;
+      this.toolTip.SetToolTip(this.refreshButton, "Refresh View");
+      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.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.skipStackOpsCheckBox.AutoSize = true;
+      this.skipStackOpsCheckBox.Location = new System.Drawing.Point(63, 516);
+      this.skipStackOpsCheckBox.Name = "skipStackOpsCheckBox";
+      this.skipStackOpsCheckBox.Size = new System.Drawing.Size(78, 17);
+      this.skipStackOpsCheckBox.TabIndex = 6;
+      this.skipStackOpsCheckBox.Text = "Skip Stack";
+      this.toolTip.SetToolTip(this.skipStackOpsCheckBox, "Automatically step over steps that manipulate only the execution stack");
+      this.skipStackOpsCheckBox.UseVisualStyleBackColor = true;
+      // 
       // stepButton
       // 
-      this.stepButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.stepButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
       this.stepButton.Image = ((System.Drawing.Image)(resources.GetObject("stepButton.Image")));
-      this.stepButton.Location = new System.Drawing.Point(815, 3);
+      this.stepButton.Location = new System.Drawing.Point(33, 511);
       this.stepButton.Name = "stepButton";
       this.stepButton.Size = new System.Drawing.Size(24, 24);
@@ -147,26 +144,4 @@
       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;
-      // 
       // splitContainer3
       // 
@@ -174,5 +149,5 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.splitContainer3.Location = new System.Drawing.Point(3, 33);
+      this.splitContainer3.Location = new System.Drawing.Point(0, 0);
       this.splitContainer3.Name = "splitContainer3";
       // 
@@ -180,31 +155,22 @@
       // 
       this.splitContainer3.Panel1.Controls.Add(this.splitContainer2);
+      // 
+      // splitContainer3.Panel2
+      // 
       this.splitContainer3.Panel2.Controls.Add(this.operatorTraceView);
-      this.splitContainer3.Size = new System.Drawing.Size(866, 502);
-      this.splitContainer3.SplitterDistance = 683;
+      this.splitContainer3.Size = new System.Drawing.Size(872, 538);
+      this.splitContainer3.SplitterDistance = 687;
       this.splitContainer3.TabIndex = 7;
+      // 
+      // operatorTraceView
+      // 
+      this.operatorTraceView.Caption = "Operator Trace View";
+      this.operatorTraceView.Content = null;
       this.operatorTraceView.Dock = System.Windows.Forms.DockStyle.Fill;
-      // 
-      // executionStackView
-      // 
-      this.executionStackView.Caption = "Execution Stack View";
-      this.executionStackView.Content = null;
-      this.executionStackView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.executionStackView.Location = new System.Drawing.Point(0, 0);
-      this.executionStackView.Name = "executionStackView";
-      this.executionStackView.ReadOnly = false;
-      this.executionStackView.Size = new System.Drawing.Size(198, 261);
-      this.executionStackView.TabIndex = 0;
-      // 
-      // operationContentView
-      // 
-      this.operationContentView.Caption = "Operation Content View";
-      this.operationContentView.Content = null;
-      this.operationContentView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.operationContentView.Location = new System.Drawing.Point(0, 0);
-      this.operationContentView.Name = "operationContentView";
-      this.operationContentView.ReadOnly = false;
-      this.operationContentView.Size = new System.Drawing.Size(481, 502);
-      this.operationContentView.TabIndex = 0;
+      this.operatorTraceView.Location = new System.Drawing.Point(0, 0);
+      this.operatorTraceView.Name = "operatorTraceView";
+      this.operatorTraceView.ReadOnly = false;
+      this.operatorTraceView.Size = new System.Drawing.Size(181, 538);
+      this.operatorTraceView.TabIndex = 0;
       // 
       // DebugEngineView
@@ -212,21 +178,14 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.Controls.Add(this.splitContainer3);
-      this.Controls.Add(this.skipStackOpsCheckBox);
-      this.Controls.Add(this.refreshButton);
-      this.Controls.Add(this.stepButton);
-      this.Controls.Add(this.executionTimeTextBox);
-      this.Controls.Add(this.label1);
       this.Name = "DebugEngineView";
       this.Size = new System.Drawing.Size(872, 538);
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      this.splitContainer1.ResumeLayout(false);
       this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel1.PerformLayout();
       this.splitContainer2.Panel2.ResumeLayout(false);
       this.splitContainer2.ResumeLayout(false);
       this.splitContainer3.Panel1.ResumeLayout(false);
+      this.splitContainer3.Panel2.ResumeLayout(false);
       this.splitContainer3.ResumeLayout(false);
       this.ResumeLayout(false);
-      this.PerformLayout();
 
     }
@@ -234,8 +193,4 @@
     #endregion
 
-    private System.Windows.Forms.Label label1;
-    private System.Windows.Forms.TextBox executionTimeTextBox;
-    private Core.Views.LogView logView;
-    private System.Windows.Forms.SplitContainer splitContainer1;
     private System.Windows.Forms.SplitContainer splitContainer2;
     private System.Windows.Forms.Button stepButton;
Index: /branches/HeuristicLab.DebugEngine/DebugEngineView.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/DebugEngineView.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/DebugEngineView.cs	(revision 4909)
@@ -58,5 +58,4 @@
     protected override void DeregisterContentEvents() {
       Content.CurrentOperationChanged -= new EventHandler<OperationChangedEventArgs>(Content_CurrentOperationChanged);
-      Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
       Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
       base.DeregisterContentEvents();
@@ -69,5 +68,4 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
       Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
       Content.CurrentOperationChanged += new EventHandler<OperationChangedEventArgs>(Content_CurrentOperationChanged);
@@ -81,12 +79,10 @@
       base.OnContentChanged();
       if (Content == null) {
-        logView.Content = null;
-        executionTimeTextBox.Text = "-";
         executionStackView.Content = null;
+        operatorTraceView.Content = null;
         operationContentView.Content = null;
       } else {
-        logView.Content = Content.Log;
-        executionTimeTextBox.Text = Content.ExecutionTime.ToString();
         executionStackView.Content = Content.ExecutionStack;
+        operatorTraceView.Content = Content.OperatorTrace;
         operationContentView.Content = new OperationContent(Content.CurrentOperation);
       }
@@ -96,11 +92,9 @@
       base.SetEnabledStateOfControls();
       if (Content == null) {
-        logView.Enabled = false;
-        executionTimeTextBox.Enabled = false;
         stepButton.Enabled = false;
+        refreshButton.Enabled = false;
       } else {
-        logView.Enabled = true;
-        executionTimeTextBox.Enabled = true;
         stepButton.Enabled = Content.CanContinue;
+        refreshButton.Enabled = Content.CurrentAtomicOperation != null;
       }
     }
@@ -108,26 +102,17 @@
     #endregion
 
-    protected virtual void Content_ExecutionTimeChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ExecutionTimeChanged), sender, e);
-      else
-        executionTimeTextBox.Text = Content == null ? "-" : Content.ExecutionTime.ToString();
-    }
-
     void Content_ExecutionStateChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
+      if (InvokeRequired) {
         Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
-      else {
+      } else {
         switch (Content.ExecutionState) {
           case ExecutionState.Started:
             executionStackView.SuspendUpdate();
-            logView.Content = null;
-            operatorTraceView.Content = null;
+            operatorTraceView.SuspendUpdate();
             break;
           default:
-            logView.Content = Content.Log;
             executionStackView.ResumeUpdate();
             operationContentView.Content = new OperationContent(Content.CurrentOperation);
-            operatorTraceView.Content = Content.OperatorTrace;
+            operatorTraceView.ResumeUpdate();
             break;
         }
@@ -140,11 +125,10 @@
         Invoke(new EventHandler<OperationChangedEventArgs>(Content_CurrentOperationChanged), sender, e);
       } else {
+
       }
     }
 
     private void stepButton_Click(object sender, EventArgs e) {
-      Content.Step();
-      while (skipStackOpsCheckBox.Checked && !(Content.CurrentOperation is IAtomicOperation) && Content.CanContinue)
-        Content.Step();
+      Content.Step(skipStackOpsCheckBox.Checked);
     }
 
Index: /branches/HeuristicLab.DebugEngine/DebugEngineView.resx
===================================================================
--- /branches/HeuristicLab.DebugEngine/DebugEngineView.resx	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/DebugEngineView.resx	(revision 4909)
@@ -119,24 +119,9 @@
   </resheader>
   <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="stepButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK/gAA
-        Cv4B5iV4ZgAAARBJREFUOE9j+P//PwM6Tuh5woxNHJsYhmaQIqABMkDMRIwhWA0onPX8f/zkt0rEGILV
-        gNyZz/4ndN/7HzfhtQYh72A1IGPK0//z9v/+H9Rw8zXQAFt8huAKg/+z9/3637n173+30sv/gQbY4zIE
-        qwGRXY/+T9n263/J0r//E6b//W+TexanIVgNCGx++L917XuwZuOSL/+lo6/9N45c9t+h6Gw8ukuwGuBR
-        df9/ydx3cM2KLj3/pX1WBxKdDuxL7/4PbHkGthmieaUXrjSB1QUWeXf+2xRcgWm2wZegsBpgmHUbrFnK
-        a7krodSI1QCdtBtAZ6/xJaQZJI/VACnvtX7S3iuIylBYDSDGZpgaig0AAOHY1PSKOymCAAAAAElFTkSu
-        QmCC
-</value>
-  </data>
-  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <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
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALBAAA
-        CwQBG8oqrQAAAmFJREFUOE+dk21IU1EYx3cVVzkhaLCy+UaY0xwlZkYRmiGR7oMEUlAGfRGKvkRFVOQ0
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALAgAA
+        CwIBm8luNgAAAmFJREFUOE+dk21IU1EYx3cVVzkhaLCy+UaY0xwlZkYRmiGR7oMEUlAGfRGKvkRFVOQ0
         DddsVmtbvpQWhCFBSvaCUcRAk0gGm8SGM7JtrU1nzYFvu3P33znDRcLpSxceDvdefr/zv+d5Lidaufjg
         QKKIWwNSUo4Tz4u4RAl5xYsgJIuEcADCYlS8oQKLvvvKdam1n+PcqjUyN5ox7PyIVrMB1U9PoKxThZI7
@@ -151,3 +136,18 @@
 </value>
   </data>
+  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <data name="stepButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAK/AAA
+        CvwBmdu77wAAARBJREFUOE9j+P//PwM6Tuh5woxNHJsYhmaQIqABMkDMRIwhWA0onPX8f/zkt0rEGILV
+        gNyZz/4ndN/7HzfhtQYh72A1IGPK0//z9v/+H9Rw8zXQAFt8huAKg/+z9/3637n173+30sv/gQbY4zIE
+        qwGRXY/+T9n263/J0r//E6b//W+TexanIVgNCGx++L917XuwZuOSL/+lo6/9N45c9t+h6Gw8ukuwGuBR
+        df9/ydx3cM2KLj3/pX1WBxKdDuxL7/4PbHkGthmieaUXrjSB1QUWeXf+2xRcgWm2wZegsBpgmHUbrFnK
+        a7krodSI1QCdtBtAZ6/xJaQZJI/VACnvtX7S3iuIylBYDSDGZpgaig0AAOHY1PSKOymCAAAAAElFTkSu
+        QmCC
+</value>
+  </data>
 </root>
Index: /branches/HeuristicLab.DebugEngine/ExecutionStackView.Designer.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/ExecutionStackView.Designer.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/ExecutionStackView.Designer.cs	(revision 4909)
@@ -24,6 +24,8 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.treeView = new System.Windows.Forms.TreeView();
       this.groupBox = new System.Windows.Forms.GroupBox();
+      this.imageList = new System.Windows.Forms.ImageList(this.components);
       this.groupBox.SuspendLayout();
       this.SuspendLayout();
@@ -32,6 +34,10 @@
       // 
       this.treeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.treeView.ImageIndex = 0;
+      this.treeView.ImageList = this.imageList;
       this.treeView.Location = new System.Drawing.Point(3, 16);
       this.treeView.Name = "treeView";
+      this.treeView.SelectedImageIndex = 0;
+      this.treeView.ShowNodeToolTips = true;
       this.treeView.Size = new System.Drawing.Size(303, 261);
       this.treeView.TabIndex = 0;
@@ -48,4 +54,10 @@
       this.groupBox.TabStop = false;
       this.groupBox.Text = "Execution Stack";
+      // 
+      // imageList
+      // 
+      this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+      this.imageList.ImageSize = new System.Drawing.Size(16, 16);
+      this.imageList.TransparentColor = System.Drawing.Color.Transparent;
       // 
       // ExecutionStackView
@@ -65,4 +77,5 @@
     private System.Windows.Forms.TreeView treeView;
     private System.Windows.Forms.GroupBox groupBox;
+    private System.Windows.Forms.ImageList imageList;
 
   }
Index: /branches/HeuristicLab.DebugEngine/ExecutionStackView.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/ExecutionStackView.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/ExecutionStackView.cs	(revision 4909)
@@ -5,4 +5,5 @@
 using System.Windows.Forms;
 using HeuristicLab.Collections;
+using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
@@ -51,7 +52,12 @@
 
     private void UpdateExecutionStack() {
-      if (!suspended) {
+      if (suspended) {
+        groupBox.Text = string.Format("Execution Stack ({0})", CountOperations(Content));
+      } else {
         treeView.BeginUpdate();
         treeView.Nodes.Clear();
+        treeView.ImageList.Images.Clear();
+        treeView.ImageList.Images.Add(VS2008ImageLibrary.Method);
+        treeView.ImageList.Images.Add(VS2008ImageLibrary.Module);
         int totalNodes = AddStackOperations(treeView.Nodes, ((IEnumerable<IOperation>)Content).Reverse());
         if (treeView.Nodes.Count > 0)
@@ -60,6 +66,4 @@
         treeView.EndUpdate();
         groupBox.Text = string.Format("Execution Stack ({0})", totalNodes);
-      } else {
-        groupBox.Text = string.Format("Execution Stack ({0})", CountOperations(Content));
       }
     }
@@ -81,8 +85,11 @@
         if (op is IAtomicOperation) {
           IAtomicOperation atom = op as IAtomicOperation;
-          TreeNode node = nodes.Add(atom.Operator.Name);
+          TreeNode node = nodes.Add(atom.Operator.Name ?? atom.Operator.ItemName);
           node.Tag = atom;
-          node.ToolTipText = Utils.TypeName(atom.Operator);
-          node.ImageKey = "AtomicOperation";
+          node.ToolTipText = string.Format("{0}{1}{1}{2}",
+            Utils.TypeName(atom.Operator), Environment.NewLine,
+            Utils.Wrap(atom.Operator.Description ?? atom.Operator.ItemDescription, 60));
+          node.ImageIndex = 0;
+          node.SelectedImageIndex = 0;
           if (atom.Operator.Breakpoint)
             node.ForeColor = Color.Red;
@@ -94,5 +101,6 @@
           node.Tag = op;
           node.ToolTipText = Utils.TypeName(ops);
-          node.ImageKey = "OperationCollection";
+          node.ImageIndex = 1;
+          node.SelectedImageIndex = 1;
           count += AddStackOperations(node.Nodes, ops);
         }
@@ -116,6 +124,4 @@
     }
 
-
-
     #region Event Handlers (child controls)
     private void treeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
@@ -137,5 +143,6 @@
     public virtual void ResumeUpdate() {
       suspended = false;
-      UpdateExecutionStack();
+      if (Content != null)
+        UpdateExecutionStack();
     }
     #endregion
Index: /branches/HeuristicLab.DebugEngine/ExecutionStackView.resx
===================================================================
--- /branches/HeuristicLab.DebugEngine/ExecutionStackView.resx	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/ExecutionStackView.resx	(revision 4909)
@@ -118,3 +118,6 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
 </root>
Index: /branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.csproj
===================================================================
--- /branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.csproj	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.csproj	(revision 4909)
@@ -102,4 +102,7 @@
       <HintPath>C:\Program Files\HeuristicLab 3.3\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
     </Reference>
+    <Reference Include="HeuristicLab.Operators-3.3">
+      <HintPath>C:\Program Files\HeuristicLab 3.3\HeuristicLab.Operators-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="HeuristicLab.Persistence-3.3">
       <HintPath>C:\Program Files\HeuristicLab 3.3\HeuristicLab.Persistence-3.3.dll</HintPath>
@@ -166,4 +169,5 @@
     <EmbeddedResource Include="OperatorTraceView.resx">
       <DependentUpon>OperatorTraceView.cs</DependentUpon>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
Index: /branches/HeuristicLab.DebugEngine/OperationContentView.Designer.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/OperationContentView.Designer.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/OperationContentView.Designer.cs	(revision 4909)
@@ -39,4 +39,8 @@
       this.collectionLabel = new System.Windows.Forms.Label();
       this.timer = new System.Windows.Forms.Timer(this.components);
+      this.executionContextImageList = new System.Windows.Forms.ImageList(this.components);
+      this.parametersImageList = new System.Windows.Forms.ImageList(this.components);
+      this.scopeImageList = new System.Windows.Forms.ImageList(this.components);
+      this.parameterColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
       this.groupBox.SuspendLayout();
       this.splitContainer1.Panel1.SuspendLayout();
@@ -117,6 +121,10 @@
       // 
       this.executionContextTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.executionContextTreeView.ImageIndex = 0;
+      this.executionContextTreeView.ImageList = this.executionContextImageList;
       this.executionContextTreeView.Location = new System.Drawing.Point(3, 16);
       this.executionContextTreeView.Name = "executionContextTreeView";
+      this.executionContextTreeView.SelectedImageIndex = 0;
+      this.executionContextTreeView.ShowNodeToolTips = true;
       this.executionContextTreeView.Size = new System.Drawing.Size(236, 161);
       this.executionContextTreeView.TabIndex = 0;
@@ -137,12 +145,17 @@
       // parameterListView
       // 
+      this.parameterListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.parameterColumn});
       this.parameterListView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.parameterListView.FullRowSelect = true;
+      this.parameterListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
+      this.parameterListView.HideSelection = false;
       this.parameterListView.Location = new System.Drawing.Point(3, 16);
       this.parameterListView.Name = "parameterListView";
+      this.parameterListView.ShowItemToolTips = true;
       this.parameterListView.Size = new System.Drawing.Size(236, 158);
+      this.parameterListView.SmallImageList = this.parametersImageList;
       this.parameterListView.TabIndex = 0;
       this.parameterListView.UseCompatibleStateImageBehavior = false;
-      this.parameterListView.View = System.Windows.Forms.View.List;
+      this.parameterListView.View = System.Windows.Forms.View.Details;
       this.parameterListView.ItemActivate += new System.EventHandler(this.parameterListView_ItemActivate);
       // 
@@ -161,8 +174,13 @@
       // 
       this.scopeTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scopeTreeView.ImageIndex = 0;
+      this.scopeTreeView.ImageList = this.scopeImageList;
       this.scopeTreeView.Location = new System.Drawing.Point(3, 16);
       this.scopeTreeView.Name = "scopeTreeView";
+      this.scopeTreeView.SelectedImageIndex = 0;
+      this.scopeTreeView.ShowNodeToolTips = true;
       this.scopeTreeView.Size = new System.Drawing.Size(299, 342);
       this.scopeTreeView.TabIndex = 0;
+      this.scopeTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.scopeTreeView_NodeMouseDoubleClick);
       // 
       // nameTextBox
@@ -215,4 +233,22 @@
       this.timer.Interval = 500;
       this.timer.Tick += new System.EventHandler(this.timer_Tick);
+      // 
+      // executionContextImageList
+      // 
+      this.executionContextImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+      this.executionContextImageList.ImageSize = new System.Drawing.Size(16, 16);
+      this.executionContextImageList.TransparentColor = System.Drawing.Color.Transparent;
+      // 
+      // parametersImageList
+      // 
+      this.parametersImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+      this.parametersImageList.ImageSize = new System.Drawing.Size(16, 16);
+      this.parametersImageList.TransparentColor = System.Drawing.Color.Transparent;
+      // 
+      // scopeImageList
+      // 
+      this.scopeImageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+      this.scopeImageList.ImageSize = new System.Drawing.Size(16, 16);
+      this.scopeImageList.TransparentColor = System.Drawing.Color.Transparent;
       // 
       // OperationContentView
@@ -254,4 +290,8 @@
     private System.Windows.Forms.GroupBox scopeGroupBox;
     private System.Windows.Forms.Timer timer;
+    private System.Windows.Forms.ImageList executionContextImageList;
+    private System.Windows.Forms.ImageList parametersImageList;
+    private System.Windows.Forms.ImageList scopeImageList;
+    private System.Windows.Forms.ColumnHeader parameterColumn;
   }
 }
Index: /branches/HeuristicLab.DebugEngine/OperationContentView.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/OperationContentView.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/OperationContentView.cs	(revision 4909)
@@ -5,4 +5,5 @@
 using System.Windows.Forms;
 using HeuristicLab.Common;
+using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
@@ -47,4 +48,5 @@
       parameterListView.BeginUpdate();
       parameterListView.Items.Clear();
+      parameterListView.SmallImageList.Images.Clear();
       if (Content.IsAtomic) {
         foreach (var param in Content.AtomicOperation.Operator.Parameters) {
@@ -52,5 +54,14 @@
             string.Format("{0} = {1}", param.Name, GetParameterValue(param, Content.ExecutionContext)));
           item.Tag = param;
-        }
+          parameterListView.SmallImageList.Images.Add(param.ItemImage ?? VS2008ImageLibrary.Nothing);
+          item.ImageIndex = parameterListView.SmallImageList.Images.Count - 1;
+          item.ToolTipText = string.Format("{0}{1}{1}{2}",
+            Utils.TypeName(param), Environment.NewLine,
+            Utils.Wrap(param.Description ?? param.ItemDescription, 60));
+        }
+      }
+      if (parameterListView.Items.Count > 0) {
+        for (int i = 0; i < parameterListView.Columns.Count; i++)
+          parameterListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
       }
       parameterListView.EndUpdate();
@@ -72,4 +83,7 @@
       scopeTreeView.BeginUpdate();
       scopeTreeView.Nodes.Clear();
+      scopeTreeView.ImageList.Images.Clear();
+      scopeTreeView.ImageList.Images.Add(VS2008ImageLibrary.Namespace);
+      scopeTreeView.ImageList.Images.Add(VS2008ImageLibrary.Field);
       if (Content.IsContext) {
         var scope = Content.ExecutionContext.Scope;
@@ -88,6 +102,9 @@
 
     private void AddScope(TreeNodeCollection nodes, IScope scope) {
-      TreeNode node = nodes.Add(string.Format("{0} ({1}+{2})", scope.Name, scope.Variables.Count, scope.SubScopes.Count));
+      TreeNode node = nodes.Add(string.Format("{0} ({1}+{2})",
+        scope.Name, scope.Variables.Count, scope.SubScopes.Count));
       node.Tag = scope;
+      node.ImageIndex = 0;
+      node.SelectedImageIndex = 0;
       if (Content.IsAtomic && Content.AtomicOperation.Scope == scope) {
         node.ForeColor = Color.Red;
@@ -97,5 +114,9 @@
         TreeNode varNode = node.Nodes.Add(string.Format("{0}={1}", var.Name, var.Value));
         varNode.Tag = var.Value;
-        varNode.ToolTipText = Utils.TypeName(var.Value);
+        varNode.ToolTipText = string.Format("{0}{1}{1}{2}",
+          Utils.TypeName(var.Value), Environment.NewLine,
+          Utils.Wrap(var.Description ?? var.ItemDescription, 60));
+        varNode.ImageIndex = 1;
+        varNode.SelectedImageIndex = 1;
       }
       foreach (var subScope in scope.SubScopes) {
@@ -107,4 +128,6 @@
       executionContextTreeView.BeginUpdate();
       executionContextTreeView.Nodes.Clear();
+      executionContextTreeView.ImageList.Images.Clear();
+      executionContextTreeView.ImageList.Images.Add(VS2008ImageLibrary.Namespace);
       if (Content.IsContext) {
         AddExecutionContext(Content.ExecutionContext, executionContextTreeView.Nodes);
@@ -120,5 +143,5 @@
       StringBuilder name = new StringBuilder();
       if (context != null && context.Operator != null)
-        name.Append("Op ").Append(context.Operator.Name);
+        name.Append(context.Operator.Name);
       else
         name.Append("<Context>");
@@ -126,7 +149,16 @@
       TreeNode node = nodes.Add(name.ToString());
       node.Tag = executionContext;
+      node.ImageIndex = 0;
+      node.SelectedImageIndex = 0;
       foreach (var param in executionContext.Parameters) {
-        TreeNode paramNode = node.Nodes.Add(string.Format("Param {0}={1}", param.Name, GetParameterValue(param, executionContext)));
+        TreeNode paramNode = node.Nodes.Add(string.Format("{0}={1}",
+          param.Name, GetParameterValue(param, executionContext)));
         paramNode.Tag = param;
+        executionContextTreeView.ImageList.Images.Add(param.ItemImage ?? VS2008ImageLibrary.Nothing);
+        paramNode.ImageIndex = executionContextTreeView.ImageList.Images.Count - 1;
+        paramNode.SelectedImageIndex = paramNode.ImageIndex;
+        paramNode.ToolTipText = string.Format("{0}{1}{1}{2}",
+          Utils.TypeName(param), Environment.NewLine,
+          Utils.Wrap(param.Description ?? param.ItemDescription, 60));
       }
       if (executionContext.Parent != null)
@@ -150,4 +182,12 @@
         if (param != null)
           MainFormManager.MainForm.ShowContent(param);
+      }
+    }
+
+    private void scopeTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
+      if (e.Node != null) {
+        IItem item = e.Node.Tag as IItem;
+        if (item != null)
+          MainFormManager.MainForm.ShowContent(item);
       }
     }
Index: /branches/HeuristicLab.DebugEngine/OperationContentView.resx
===================================================================
--- /branches/HeuristicLab.DebugEngine/OperationContentView.resx	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/OperationContentView.resx	(revision 4909)
@@ -118,4 +118,13 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="executionContextImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>97, 17</value>
+  </metadata>
+  <metadata name="parametersImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>296, 17</value>
+  </metadata>
+  <metadata name="scopeImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>461, 17</value>
+  </metadata>
   <metadata name="timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
Index: /branches/HeuristicLab.DebugEngine/OperatorTraceView.Designer.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/OperatorTraceView.Designer.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/OperatorTraceView.Designer.cs	(revision 4909)
@@ -24,6 +24,9 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.operatorTraceGroupBox = new System.Windows.Forms.GroupBox();
       this.listView = new System.Windows.Forms.ListView();
+      this.listViewColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+      this.imageList = new System.Windows.Forms.ImageList(this.components);
       this.operatorTraceGroupBox.SuspendLayout();
       this.SuspendLayout();
@@ -35,5 +38,5 @@
       this.operatorTraceGroupBox.Location = new System.Drawing.Point(0, 0);
       this.operatorTraceGroupBox.Name = "operatorTraceGroupBox";
-      this.operatorTraceGroupBox.Size = new System.Drawing.Size(515, 405);
+      this.operatorTraceGroupBox.Size = new System.Drawing.Size(152, 489);
       this.operatorTraceGroupBox.TabIndex = 0;
       this.operatorTraceGroupBox.TabStop = false;
@@ -42,13 +45,24 @@
       // listView
       // 
+      this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.listViewColumnHeader});
       this.listView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.listView.FullRowSelect = true;
+      this.listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
+      this.listView.HideSelection = false;
       this.listView.Location = new System.Drawing.Point(3, 16);
       this.listView.Name = "listView";
-      this.listView.Size = new System.Drawing.Size(509, 386);
+      this.listView.ShowItemToolTips = true;
+      this.listView.Size = new System.Drawing.Size(146, 470);
+      this.listView.SmallImageList = this.imageList;
       this.listView.TabIndex = 0;
       this.listView.UseCompatibleStateImageBehavior = false;
-      this.listView.View = System.Windows.Forms.View.List;
+      this.listView.View = System.Windows.Forms.View.Details;
       this.listView.ItemActivate += new System.EventHandler(this.listView_ItemActivate);
+      // 
+      // imageList
+      // 
+      this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
+      this.imageList.ImageSize = new System.Drawing.Size(16, 16);
+      this.imageList.TransparentColor = System.Drawing.Color.Transparent;
       // 
       // OperatorTraceView
@@ -58,5 +72,5 @@
       this.Controls.Add(this.operatorTraceGroupBox);
       this.Name = "OperatorTraceView";
-      this.Size = new System.Drawing.Size(515, 405);
+      this.Size = new System.Drawing.Size(152, 489);
       this.operatorTraceGroupBox.ResumeLayout(false);
       this.ResumeLayout(false);
@@ -68,4 +82,6 @@
     private System.Windows.Forms.GroupBox operatorTraceGroupBox;
     private System.Windows.Forms.ListView listView;
+    private System.Windows.Forms.ImageList imageList;
+    private System.Windows.Forms.ColumnHeader listViewColumnHeader;
   }
 }
Index: /branches/HeuristicLab.DebugEngine/OperatorTraceView.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/OperatorTraceView.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/OperatorTraceView.cs	(revision 4909)
@@ -2,7 +2,9 @@
 using System.Windows.Forms;
 using HeuristicLab.Collections;
+using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
+using HeuristicLab.Operators;
 
 namespace HeuristicLab.DebugEngine {
@@ -49,9 +51,22 @@
 
     private void UpdateOperatorTrace() {
+      if (suspended)
+        return;
       listView.BeginUpdate();
       listView.Items.Clear();
+      listView.SmallImageList.Images.Clear();
+      listView.SmallImageList.Images.Add(VS2008ImageLibrary.Method);
+      listView.SmallImageList.Images.Add(VS2008ImageLibrary.Module);
       foreach (var item in Content) {
         var viewItem = listView.Items.Add(item.Name ?? item.ItemName);
+        viewItem.ToolTipText = string.Format("{0}{1}{1}{2}",
+          Utils.TypeName(item), Environment.NewLine,
+          Utils.Wrap(item.Description, 60));
         viewItem.Tag = item;
+        viewItem.ImageIndex = item is CombinedOperator ? 1 : 0;
+      }
+      if (listView.Items.Count > 0) {
+        for (int i = 0; i < listView.Columns.Count; i++)
+          listView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
       }
       listView.EndUpdate();
@@ -77,4 +92,13 @@
     }
     #endregion
+
+    private bool suspended = false;
+    public void SuspendUpdate() {
+      suspended = true;
+    }
+    public void ResumeUpdate() {
+      suspended = false;
+      UpdateOperatorTrace();
+    }
   }
 
Index: /branches/HeuristicLab.DebugEngine/OperatorTraceView.resx
===================================================================
--- /branches/HeuristicLab.DebugEngine/OperatorTraceView.resx	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/OperatorTraceView.resx	(revision 4909)
@@ -118,3 +118,6 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
 </root>
Index: /branches/HeuristicLab.DebugEngine/Utils.cs
===================================================================
--- /branches/HeuristicLab.DebugEngine/Utils.cs	(revision 4908)
+++ /branches/HeuristicLab.DebugEngine/Utils.cs	(revision 4909)
@@ -1,6 +1,5 @@
 ﻿using System;
-using System.Collections.Generic;
-using System.Linq;
 using System.Text;
+using System.Text.RegularExpressions;
 using HeuristicLab.Persistence.Auxiliary;
 
@@ -12,4 +11,23 @@
       return TypeNameParser.Parse(obj.GetType().ToString()).GetTypeNameInCode(true);
     }
+    public static string Wrap(string text, int columns) {
+      StringBuilder sb = new StringBuilder();
+      Regex whitespace = new Regex("\\s");
+      int lineLength = 0;
+      foreach (var word in whitespace.Split(text)) {
+        if (lineLength + word.Length < columns) {
+          if (lineLength > 0) {
+            sb.Append(' ');
+            lineLength++;
+          }
+          sb.Append(word);
+          lineLength += word.Length;
+        } else {
+          sb.Append(Environment.NewLine).Append(word);
+          lineLength = word.Length;
+        }
+      }
+      return sb.ToString();
+    }
   }
 }
