Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/ExpressionSelectionView.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/ExpressionSelectionView.cs	(revision 14747)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/ExpressionSelectionView.cs	(revision 14777)
@@ -43,13 +43,13 @@
 
     private void ExpressionsTreeViewAfterCheck(object sender, TreeViewEventArgs e) {
-      var isStackNode = e.Node.Tag is StackType;
+      var isStackNode = e.Node.Tag is StackTypes;
 
       if (isStackNode) {
         if (e.Node.Checked) {
-          Content.EnableStack((StackType)e.Node.Tag);
+          Content.EnableStack((StackTypes)e.Node.Tag);
           foreach (var subNode in e.Node.Nodes.Cast<TreeNode>())
             subNode.Checked = true;
         } else {
-          Content.DisableStack((StackType)e.Node.Tag);
+          Content.DisableStack((StackTypes)e.Node.Tag);
           foreach (var subNode in e.Node.Nodes.Cast<TreeNode>())
             subNode.Checked = false;
@@ -71,4 +71,6 @@
       }
 
+      this.nameTextBox.Text = "Push Expression Selection";
+
       var treeNodes = GetTreeNodes(Content.EnabledExpressions).ToArray();
       expressionsTreeView.Nodes.AddRange(treeNodes);
@@ -79,5 +81,5 @@
         var stackTreeNode = new TreeNode {
           Tag = stackType,
-          Text = Enum.GetName(typeof(StackType), stackType),
+          Text = Enum.GetName(typeof(StackTypes), stackType),
         };
 
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/ExpressionSelectionView.resx
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/ExpressionSelectionView.resx	(revision 14747)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/ExpressionSelectionView.resx	(revision 14777)
@@ -68,9 +68,9 @@
             <xsd:complexType>
               <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+                <xsd:element name="value" types="xsd:string" minOccurs="0" />
               </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute name="name" use="required" types="xsd:string" />
+              <xsd:attribute name="types" types="xsd:string" />
+              <xsd:attribute name="mimetypes" types="xsd:string" />
               <xsd:attribute ref="xml:space" />
             </xsd:complexType>
@@ -78,6 +78,6 @@
           <xsd:element name="assembly">
             <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="alias" types="xsd:string" />
+              <xsd:attribute name="name" types="xsd:string" />
             </xsd:complexType>
           </xsd:element>
@@ -85,10 +85,10 @@
             <xsd:complexType>
               <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+                <xsd:element name="value" types="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" types="xsd:string" minOccurs="0" msdata:Ordinal="2" />
               </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute name="name" types="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="types" types="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetypes" types="xsd:string" msdata:Ordinal="4" />
               <xsd:attribute ref="xml:space" />
             </xsd:complexType>
@@ -97,7 +97,7 @@
             <xsd:complexType>
               <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="value" types="xsd:string" minOccurs="0" msdata:Ordinal="1" />
               </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
+              <xsd:attribute name="name" types="xsd:string" use="required" />
             </xsd:complexType>
           </xsd:element>
@@ -118,8 +118,8 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="errorProvider.TrayLocation" types="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
-  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+  <metadata name="toolTip.TrayLocation" types="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>140, 17</value>
   </metadata>
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.Designer.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.Designer.cs	(revision 14747)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.Designer.cs	(revision 14777)
@@ -25,33 +25,60 @@
     private void InitializeComponent() {
       System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PushProgramDebuggerView));
-      this.execGroupBox = new System.Windows.Forms.GroupBox();
-      this.execList = new System.Windows.Forms.ListView();
+      this.tabControl = new System.Windows.Forms.TabControl();
+      this.tabPage1 = new System.Windows.Forms.TabPage();
+      this.simplifyButton = new System.Windows.Forms.Button();
+      this.skipNoopsCheckBox = new System.Windows.Forms.CheckBox();
+      this.runButton = new System.Windows.Forms.Button();
+      this.stepWidthBox = new System.Windows.Forms.NumericUpDown();
+      this.resetButton = new System.Windows.Forms.Button();
+      this.stepButton = new System.Windows.Forms.Button();
+      this.exampleComboBox = new System.Windows.Forms.ComboBox();
+      this.label1 = new System.Windows.Forms.Label();
+      this.debugTableLayout = new System.Windows.Forms.TableLayoutPanel();
+      this.codeGroupBox = new System.Windows.Forms.GroupBox();
+      this.codeList = new System.Windows.Forms.ListBox();
+      this.nameGroupBox = new System.Windows.Forms.GroupBox();
+      this.nameList = new System.Windows.Forms.ListBox();
       this.integerGroupBox = new System.Windows.Forms.GroupBox();
       this.integerList = new System.Windows.Forms.ListBox();
       this.floatGroupBox = new System.Windows.Forms.GroupBox();
+      this.groupBox2 = new System.Windows.Forms.GroupBox();
+      this.listBox2 = new System.Windows.Forms.ListBox();
       this.floatList = new System.Windows.Forms.ListBox();
-      this.codeGroupBox = new System.Windows.Forms.GroupBox();
-      this.codeList = new System.Windows.Forms.ListBox();
+      this.execGroupBox = new System.Windows.Forms.GroupBox();
+      this.execList = new System.Windows.Forms.ListView();
       this.booleanGroupBox = new System.Windows.Forms.GroupBox();
+      this.groupBox4 = new System.Windows.Forms.GroupBox();
+      this.listBox3 = new System.Windows.Forms.ListBox();
       this.booleanList = new System.Windows.Forms.ListBox();
-      this.nameGroupBox = new System.Windows.Forms.GroupBox();
-      this.nameList = new System.Windows.Forms.ListBox();
-      this.stepButton = new System.Windows.Forms.Button();
-      this.resetButton = new System.Windows.Forms.Button();
-      this.label1 = new System.Windows.Forms.Label();
-      this.exampleComboBox = new System.Windows.Forms.ComboBox();
-      this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
-      this.stepWidthBox = new System.Windows.Forms.NumericUpDown();
-      this.runButton = new System.Windows.Forms.Button();
-      this.skipNoopsCheckBox = new System.Windows.Forms.CheckBox();
+      this.stringGroupBox = new System.Windows.Forms.GroupBox();
+      this.groupBox6 = new System.Windows.Forms.GroupBox();
+      this.listBox5 = new System.Windows.Forms.ListBox();
+      this.stringList = new System.Windows.Forms.ListBox();
+      this.charGroupBox = new System.Windows.Forms.GroupBox();
+      this.groupBox8 = new System.Windows.Forms.GroupBox();
+      this.listBox7 = new System.Windows.Forms.ListBox();
+      this.charList = new System.Windows.Forms.ListBox();
+      this.tabPage2 = new System.Windows.Forms.TabPage();
+      this.resultsDataGrid = new System.Windows.Forms.DataGridView();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.execGroupBox.SuspendLayout();
+      this.tabControl.SuspendLayout();
+      this.tabPage1.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.stepWidthBox)).BeginInit();
+      this.debugTableLayout.SuspendLayout();
+      this.codeGroupBox.SuspendLayout();
+      this.nameGroupBox.SuspendLayout();
       this.integerGroupBox.SuspendLayout();
       this.floatGroupBox.SuspendLayout();
-      this.codeGroupBox.SuspendLayout();
+      this.groupBox2.SuspendLayout();
+      this.execGroupBox.SuspendLayout();
       this.booleanGroupBox.SuspendLayout();
-      this.nameGroupBox.SuspendLayout();
-      this.tableLayoutPanel1.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.stepWidthBox)).BeginInit();
+      this.groupBox4.SuspendLayout();
+      this.stringGroupBox.SuspendLayout();
+      this.groupBox6.SuspendLayout();
+      this.charGroupBox.SuspendLayout();
+      this.groupBox8.SuspendLayout();
+      this.tabPage2.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.resultsDataGrid)).BeginInit();
       this.SuspendLayout();
       //
@@ -60,233 +87,76 @@
       this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
       this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Size = new System.Drawing.Size(890, 20);
+      this.nameTextBox.Size = new System.Drawing.Size(1176, 20);
       //
       // infoLabel
       //
-      this.infoLabel.Location = new System.Drawing.Point(954, 3);
-      //
-      // execGroupBox
-      //
-      this.execGroupBox.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.execGroupBox.Controls.Add(this.execList);
-      this.execGroupBox.Location = new System.Drawing.Point(3, 3);
-      this.execGroupBox.Name = "execGroupBox";
-      this.execGroupBox.Size = new System.Drawing.Size(244, 633);
-      this.execGroupBox.TabIndex = 3;
-      this.execGroupBox.TabStop = false;
-      this.execGroupBox.Text = "Exec";
-      //
-      // execList
-      //
-      this.execList.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.execList.Location = new System.Drawing.Point(3, 16);
-      this.execList.Name = "execList";
-      this.execList.Size = new System.Drawing.Size(235, 605);
-      this.execList.TabIndex = 1;
-      this.execList.UseCompatibleStateImageBehavior = false;
-      this.execList.View = System.Windows.Forms.View.List;
-      this.execList.VirtualMode = true;
-      //
-      // integerGroupBox
-      //
-      this.integerGroupBox.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.integerGroupBox.Controls.Add(this.integerList);
-      this.integerGroupBox.Location = new System.Drawing.Point(628, 3);
-      this.integerGroupBox.Name = "integerGroupBox";
-      this.integerGroupBox.Size = new System.Drawing.Size(119, 633);
-      this.integerGroupBox.TabIndex = 4;
-      this.integerGroupBox.TabStop = false;
-      this.integerGroupBox.Text = "Integer";
-      //
-      // integerList
-      //
-      this.integerList.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.integerList.FormattingEnabled = true;
-      this.integerList.HorizontalScrollbar = true;
-      this.integerList.Location = new System.Drawing.Point(6, 19);
-      this.integerList.Name = "integerList";
-      this.integerList.SelectionMode = System.Windows.Forms.SelectionMode.None;
-      this.integerList.Size = new System.Drawing.Size(107, 602);
-      this.integerList.TabIndex = 3;
-      //
-      // floatGroupBox
-      //
-      this.floatGroupBox.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.floatGroupBox.Controls.Add(this.floatList);
-      this.floatGroupBox.Location = new System.Drawing.Point(753, 3);
-      this.floatGroupBox.Name = "floatGroupBox";
-      this.floatGroupBox.Size = new System.Drawing.Size(119, 633);
-      this.floatGroupBox.TabIndex = 5;
-      this.floatGroupBox.TabStop = false;
-      this.floatGroupBox.Text = "Float";
-      //
-      // floatList
-      //
-      this.floatList.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.floatList.FormattingEnabled = true;
-      this.floatList.HorizontalScrollbar = true;
-      this.floatList.Location = new System.Drawing.Point(6, 19);
-      this.floatList.Name = "floatList";
-      this.floatList.SelectionMode = System.Windows.Forms.SelectionMode.None;
-      this.floatList.Size = new System.Drawing.Size(107, 602);
-      this.floatList.TabIndex = 4;
-      //
-      // codeGroupBox
-      //
-      this.codeGroupBox.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.codeGroupBox.Controls.Add(this.codeList);
-      this.codeGroupBox.Location = new System.Drawing.Point(253, 3);
-      this.codeGroupBox.Name = "codeGroupBox";
-      this.codeGroupBox.Size = new System.Drawing.Size(244, 633);
-      this.codeGroupBox.TabIndex = 5;
-      this.codeGroupBox.TabStop = false;
-      this.codeGroupBox.Text = "Code";
-      //
-      // codeList
-      //
-      this.codeList.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.codeList.FormattingEnabled = true;
-      this.codeList.HorizontalScrollbar = true;
-      this.codeList.Location = new System.Drawing.Point(7, 19);
-      this.codeList.Name = "codeList";
-      this.codeList.SelectionMode = System.Windows.Forms.SelectionMode.None;
-      this.codeList.Size = new System.Drawing.Size(231, 602);
-      this.codeList.TabIndex = 1;
-      //
-      // booleanGroupBox
-      //
-      this.booleanGroupBox.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.booleanGroupBox.Controls.Add(this.booleanList);
-      this.booleanGroupBox.Location = new System.Drawing.Point(878, 3);
-      this.booleanGroupBox.Name = "booleanGroupBox";
-      this.booleanGroupBox.Size = new System.Drawing.Size(119, 633);
-      this.booleanGroupBox.TabIndex = 5;
-      this.booleanGroupBox.TabStop = false;
-      this.booleanGroupBox.Text = "Boolean";
-      //
-      // booleanList
-      //
-      this.booleanList.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.booleanList.FormattingEnabled = true;
-      this.booleanList.HorizontalScrollbar = true;
-      this.booleanList.Location = new System.Drawing.Point(6, 19);
-      this.booleanList.Name = "booleanList";
-      this.booleanList.SelectionMode = System.Windows.Forms.SelectionMode.None;
-      this.booleanList.Size = new System.Drawing.Size(107, 602);
-      this.booleanList.TabIndex = 5;
-      //
-      // nameGroupBox
-      //
-      this.nameGroupBox.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.nameGroupBox.Controls.Add(this.nameList);
-      this.nameGroupBox.Location = new System.Drawing.Point(503, 3);
-      this.nameGroupBox.Name = "nameGroupBox";
-      this.nameGroupBox.Size = new System.Drawing.Size(119, 633);
-      this.nameGroupBox.TabIndex = 5;
-      this.nameGroupBox.TabStop = false;
-      this.nameGroupBox.Text = "Name";
-      //
-      // nameList
-      //
-      this.nameList.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.nameList.FormattingEnabled = true;
-      this.nameList.HorizontalScrollbar = true;
-      this.nameList.Location = new System.Drawing.Point(6, 19);
-      this.nameList.Name = "nameList";
-      this.nameList.SelectionMode = System.Windows.Forms.SelectionMode.None;
-      this.nameList.Size = new System.Drawing.Size(107, 602);
-      this.nameList.TabIndex = 2;
-      //
-      // stepButton
-      //
-      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(112, 698);
-      this.stepButton.Name = "stepButton";
-      this.stepButton.Size = new System.Drawing.Size(28, 26);
-      this.stepButton.TabIndex = 6;
-      this.toolTip.SetToolTip(this.stepButton, "Step");
-      this.stepButton.UseVisualStyleBackColor = true;
-      //
-      // resetButton
-      //
-      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.resetButton.Image = ((System.Drawing.Image)(resources.GetObject("resetButton.Image")));
-      this.resetButton.Location = new System.Drawing.Point(6, 698);
-      this.resetButton.Name = "resetButton";
-      this.resetButton.Size = new System.Drawing.Size(28, 26);
-      this.resetButton.TabIndex = 7;
-      this.toolTip.SetToolTip(this.resetButton, "Reset to start");
-      this.resetButton.UseVisualStyleBackColor = true;
-      //
-      // label1
-      //
-      this.label1.AutoSize = true;
-      this.label1.Location = new System.Drawing.Point(3, 29);
-      this.label1.Name = "label1";
-      this.label1.Size = new System.Drawing.Size(50, 13);
-      this.label1.TabIndex = 8;
-      this.label1.Text = "Example:";
-      //
-      // exampleComboBox
-      //
-      this.exampleComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-            | System.Windows.Forms.AnchorStyles.Right)));
-      this.exampleComboBox.FormattingEnabled = true;
-      this.exampleComboBox.Location = new System.Drawing.Point(58, 26);
-      this.exampleComboBox.Name = "exampleComboBox";
-      this.exampleComboBox.Size = new System.Drawing.Size(890, 21);
-      this.exampleComboBox.TabIndex = 9;
-      //
-      // tableLayoutPanel1
-      //
-      this.tableLayoutPanel1.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.tableLayoutPanel1.AutoScroll = true;
-      this.tableLayoutPanel1.ColumnCount = 7;
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 250F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 250F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 125F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 125F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 125F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 125F));
-      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36F));
-      this.tableLayoutPanel1.Controls.Add(this.codeGroupBox, 1, 0);
-      this.tableLayoutPanel1.Controls.Add(this.nameGroupBox, 2, 0);
-      this.tableLayoutPanel1.Controls.Add(this.integerGroupBox, 3, 0);
-      this.tableLayoutPanel1.Controls.Add(this.floatGroupBox, 4, 0);
-      this.tableLayoutPanel1.Controls.Add(this.booleanGroupBox, 5, 0);
-      this.tableLayoutPanel1.Controls.Add(this.execGroupBox, 0, 0);
-      this.tableLayoutPanel1.Location = new System.Drawing.Point(6, 53);
-      this.tableLayoutPanel1.Name = "tableLayoutPanel1";
-      this.tableLayoutPanel1.RowCount = 1;
-      this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
-      this.tableLayoutPanel1.Size = new System.Drawing.Size(1036, 639);
-      this.tableLayoutPanel1.TabIndex = 1;
+      this.infoLabel.Location = new System.Drawing.Point(1259, 3);
+      //
+      // tabControl
+      //
+      this.tabControl.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.tabControl.Controls.Add(this.tabPage1);
+      this.tabControl.Controls.Add(this.tabPage2);
+      this.tabControl.Location = new System.Drawing.Point(6, 26);
+      this.tabControl.Name = "tabControl";
+      this.tabControl.SelectedIndex = 0;
+      this.tabControl.Size = new System.Drawing.Size(1269, 698);
+      this.tabControl.TabIndex = 12;
+      //
+      // tabPage1
+      //
+      this.tabPage1.Controls.Add(this.simplifyButton);
+      this.tabPage1.Controls.Add(this.skipNoopsCheckBox);
+      this.tabPage1.Controls.Add(this.runButton);
+      this.tabPage1.Controls.Add(this.stepWidthBox);
+      this.tabPage1.Controls.Add(this.resetButton);
+      this.tabPage1.Controls.Add(this.stepButton);
+      this.tabPage1.Controls.Add(this.exampleComboBox);
+      this.tabPage1.Controls.Add(this.label1);
+      this.tabPage1.Controls.Add(this.debugTableLayout);
+      this.tabPage1.Location = new System.Drawing.Point(4, 22);
+      this.tabPage1.Name = "tabPage1";
+      this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPage1.Size = new System.Drawing.Size(1261, 672);
+      this.tabPage1.TabIndex = 0;
+      this.tabPage1.Text = "Debug";
+      this.tabPage1.UseVisualStyleBackColor = true;
+      //
+      // simplifyButton
+      //
+      this.simplifyButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.simplifyButton.Location = new System.Drawing.Point(237, 640);
+      this.simplifyButton.Name = "simplifyButton";
+      this.simplifyButton.Size = new System.Drawing.Size(62, 26);
+      this.simplifyButton.TabIndex = 17;
+      this.simplifyButton.Text = "Simplify";
+      this.toolTip.SetToolTip(this.simplifyButton, "Run all instructions");
+      this.simplifyButton.UseVisualStyleBackColor = true;
+      //
+      // skipNoopsCheckBox
+      //
+      this.skipNoopsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.skipNoopsCheckBox.AutoSize = true;
+      this.skipNoopsCheckBox.Checked = true;
+      this.skipNoopsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
+      this.skipNoopsCheckBox.Location = new System.Drawing.Point(150, 646);
+      this.skipNoopsCheckBox.Name = "skipNoopsCheckBox";
+      this.skipNoopsCheckBox.Size = new System.Drawing.Size(81, 17);
+      this.skipNoopsCheckBox.TabIndex = 16;
+      this.skipNoopsCheckBox.Text = "Skip NOOP";
+      this.skipNoopsCheckBox.UseVisualStyleBackColor = true;
+      //
+      // runButton
+      //
+      this.runButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.runButton.Image = ((System.Drawing.Image)(resources.GetObject("runButton.Image")));
+      this.runButton.Location = new System.Drawing.Point(40, 640);
+      this.runButton.Name = "runButton";
+      this.runButton.Size = new System.Drawing.Size(28, 26);
+      this.runButton.TabIndex = 15;
+      this.toolTip.SetToolTip(this.runButton, "Run all instructions");
+      this.runButton.UseVisualStyleBackColor = true;
       //
       // stepWidthBox
@@ -294,5 +164,5 @@
       this.stepWidthBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
       this.stepWidthBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-      this.stepWidthBox.Location = new System.Drawing.Point(73, 699);
+      this.stepWidthBox.Location = new System.Drawing.Point(73, 641);
       this.stepWidthBox.Maximum = new decimal(new int[] {
             99999,
@@ -307,5 +177,5 @@
       this.stepWidthBox.Name = "stepWidthBox";
       this.stepWidthBox.Size = new System.Drawing.Size(40, 24);
-      this.stepWidthBox.TabIndex = 2;
+      this.stepWidthBox.TabIndex = 12;
       this.stepWidthBox.Value = new decimal(new int[] {
             1,
@@ -314,27 +184,418 @@
             0});
       //
-      // runButton
-      //
-      this.runButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.runButton.Image = ((System.Drawing.Image)(resources.GetObject("runButton.Image")));
-      this.runButton.Location = new System.Drawing.Point(40, 698);
-      this.runButton.Name = "runButton";
-      this.runButton.Size = new System.Drawing.Size(28, 26);
-      this.runButton.TabIndex = 10;
-      this.toolTip.SetToolTip(this.runButton, "Run all instructions");
-      this.runButton.UseVisualStyleBackColor = true;
-      //
-      // skipNoopsCheckBox
-      //
-      this.skipNoopsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.skipNoopsCheckBox.AutoSize = true;
-      this.skipNoopsCheckBox.Checked = true;
-      this.skipNoopsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
-      this.skipNoopsCheckBox.Location = new System.Drawing.Point(150, 704);
-      this.skipNoopsCheckBox.Name = "skipNoopsCheckBox";
-      this.skipNoopsCheckBox.Size = new System.Drawing.Size(81, 17);
-      this.skipNoopsCheckBox.TabIndex = 11;
-      this.skipNoopsCheckBox.Text = "Skip NOOP";
-      this.skipNoopsCheckBox.UseVisualStyleBackColor = true;
+      // resetButton
+      //
+      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.resetButton.Image = ((System.Drawing.Image)(resources.GetObject("resetButton.Image")));
+      this.resetButton.Location = new System.Drawing.Point(6, 640);
+      this.resetButton.Name = "resetButton";
+      this.resetButton.Size = new System.Drawing.Size(28, 26);
+      this.resetButton.TabIndex = 14;
+      this.toolTip.SetToolTip(this.resetButton, "Reset to start");
+      this.resetButton.UseVisualStyleBackColor = true;
+      //
+      // stepButton
+      //
+      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(112, 640);
+      this.stepButton.Name = "stepButton";
+      this.stepButton.Size = new System.Drawing.Size(28, 26);
+      this.stepButton.TabIndex = 13;
+      this.toolTip.SetToolTip(this.stepButton, "Step");
+      this.stepButton.UseVisualStyleBackColor = true;
+      //
+      // exampleComboBox
+      //
+      this.exampleComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.exampleComboBox.FormattingEnabled = true;
+      this.exampleComboBox.Location = new System.Drawing.Point(58, 6);
+      this.exampleComboBox.Name = "exampleComboBox";
+      this.exampleComboBox.Size = new System.Drawing.Size(1165, 21);
+      this.exampleComboBox.TabIndex = 11;
+      //
+      // 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(50, 13);
+      this.label1.TabIndex = 10;
+      this.label1.Text = "Example:";
+      //
+      // debugTableLayout
+      //
+      this.debugTableLayout.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.debugTableLayout.AutoScroll = true;
+      this.debugTableLayout.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+      this.debugTableLayout.ColumnCount = 9;
+      this.debugTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 270F));
+      this.debugTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 270F));
+      this.debugTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+      this.debugTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+      this.debugTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+      this.debugTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+      this.debugTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+      this.debugTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+      this.debugTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+      this.debugTableLayout.Controls.Add(this.codeGroupBox, 1, 0);
+      this.debugTableLayout.Controls.Add(this.nameGroupBox, 2, 0);
+      this.debugTableLayout.Controls.Add(this.integerGroupBox, 3, 0);
+      this.debugTableLayout.Controls.Add(this.floatGroupBox, 4, 0);
+      this.debugTableLayout.Controls.Add(this.execGroupBox, 0, 0);
+      this.debugTableLayout.Controls.Add(this.booleanGroupBox, 5, 0);
+      this.debugTableLayout.Controls.Add(this.stringGroupBox, 6, 0);
+      this.debugTableLayout.Controls.Add(this.charGroupBox, 7, 0);
+      this.debugTableLayout.Location = new System.Drawing.Point(6, 33);
+      this.debugTableLayout.Name = "debugTableLayout";
+      this.debugTableLayout.RowCount = 1;
+      this.debugTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle());
+      this.debugTableLayout.Size = new System.Drawing.Size(1259, 601);
+      this.debugTableLayout.TabIndex = 2;
+      //
+      // codeGroupBox
+      //
+      this.codeGroupBox.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.codeGroupBox.Controls.Add(this.codeList);
+      this.codeGroupBox.Location = new System.Drawing.Point(273, 3);
+      this.codeGroupBox.Name = "codeGroupBox";
+      this.codeGroupBox.Size = new System.Drawing.Size(264, 595);
+      this.codeGroupBox.TabIndex = 5;
+      this.codeGroupBox.TabStop = false;
+      this.codeGroupBox.Text = "Code";
+      //
+      // codeList
+      //
+      this.codeList.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.codeList.FormattingEnabled = true;
+      this.codeList.HorizontalScrollbar = true;
+      this.codeList.Location = new System.Drawing.Point(7, 19);
+      this.codeList.Name = "codeList";
+      this.codeList.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.codeList.Size = new System.Drawing.Size(251, 563);
+      this.codeList.TabIndex = 1;
+      //
+      // nameGroupBox
+      //
+      this.nameGroupBox.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.nameGroupBox.Controls.Add(this.nameList);
+      this.nameGroupBox.Location = new System.Drawing.Point(543, 3);
+      this.nameGroupBox.Name = "nameGroupBox";
+      this.nameGroupBox.Size = new System.Drawing.Size(119, 595);
+      this.nameGroupBox.TabIndex = 5;
+      this.nameGroupBox.TabStop = false;
+      this.nameGroupBox.Text = "Name";
+      //
+      // nameList
+      //
+      this.nameList.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.nameList.FormattingEnabled = true;
+      this.nameList.HorizontalScrollbar = true;
+      this.nameList.Location = new System.Drawing.Point(6, 19);
+      this.nameList.Name = "nameList";
+      this.nameList.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.nameList.Size = new System.Drawing.Size(107, 563);
+      this.nameList.TabIndex = 2;
+      //
+      // integerGroupBox
+      //
+      this.integerGroupBox.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.integerGroupBox.Controls.Add(this.integerList);
+      this.integerGroupBox.Location = new System.Drawing.Point(668, 3);
+      this.integerGroupBox.Name = "integerGroupBox";
+      this.integerGroupBox.Size = new System.Drawing.Size(119, 595);
+      this.integerGroupBox.TabIndex = 4;
+      this.integerGroupBox.TabStop = false;
+      this.integerGroupBox.Text = "Integer";
+      //
+      // integerList
+      //
+      this.integerList.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.integerList.FormattingEnabled = true;
+      this.integerList.HorizontalScrollbar = true;
+      this.integerList.Location = new System.Drawing.Point(6, 19);
+      this.integerList.Name = "integerList";
+      this.integerList.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.integerList.Size = new System.Drawing.Size(107, 563);
+      this.integerList.TabIndex = 3;
+      //
+      // floatGroupBox
+      //
+      this.floatGroupBox.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.floatGroupBox.Controls.Add(this.groupBox2);
+      this.floatGroupBox.Controls.Add(this.floatList);
+      this.floatGroupBox.Location = new System.Drawing.Point(793, 3);
+      this.floatGroupBox.Name = "floatGroupBox";
+      this.floatGroupBox.Size = new System.Drawing.Size(119, 595);
+      this.floatGroupBox.TabIndex = 5;
+      this.floatGroupBox.TabStop = false;
+      this.floatGroupBox.Text = "Float";
+      //
+      // groupBox2
+      //
+      this.groupBox2.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.groupBox2.Controls.Add(this.listBox2);
+      this.groupBox2.Location = new System.Drawing.Point(1003, 3);
+      this.groupBox2.Name = "groupBox2";
+      this.groupBox2.Size = new System.Drawing.Size(253, 595);
+      this.groupBox2.TabIndex = 6;
+      this.groupBox2.TabStop = false;
+      this.groupBox2.Text = "Float";
+      //
+      // listBox2
+      //
+      this.listBox2.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.listBox2.FormattingEnabled = true;
+      this.listBox2.HorizontalScrollbar = true;
+      this.listBox2.Location = new System.Drawing.Point(6, 19);
+      this.listBox2.Name = "listBox2";
+      this.listBox2.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.listBox2.Size = new System.Drawing.Size(107, 563);
+      this.listBox2.TabIndex = 4;
+      //
+      // floatList
+      //
+      this.floatList.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.floatList.FormattingEnabled = true;
+      this.floatList.HorizontalScrollbar = true;
+      this.floatList.Location = new System.Drawing.Point(6, 19);
+      this.floatList.Name = "floatList";
+      this.floatList.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.floatList.Size = new System.Drawing.Size(107, 563);
+      this.floatList.TabIndex = 4;
+      //
+      // execGroupBox
+      //
+      this.execGroupBox.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.execGroupBox.Controls.Add(this.execList);
+      this.execGroupBox.Location = new System.Drawing.Point(3, 3);
+      this.execGroupBox.Name = "execGroupBox";
+      this.execGroupBox.Size = new System.Drawing.Size(264, 595);
+      this.execGroupBox.TabIndex = 3;
+      this.execGroupBox.TabStop = false;
+      this.execGroupBox.Text = "Exec";
+      //
+      // execList
+      //
+      this.execList.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.execList.Location = new System.Drawing.Point(3, 16);
+      this.execList.Name = "execList";
+      this.execList.Size = new System.Drawing.Size(255, 571);
+      this.execList.TabIndex = 1;
+      this.execList.UseCompatibleStateImageBehavior = false;
+      this.execList.View = System.Windows.Forms.View.List;
+      this.execList.VirtualMode = true;
+      //
+      // booleanGroupBox
+      //
+      this.booleanGroupBox.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.booleanGroupBox.Controls.Add(this.groupBox4);
+      this.booleanGroupBox.Controls.Add(this.booleanList);
+      this.booleanGroupBox.Location = new System.Drawing.Point(918, 3);
+      this.booleanGroupBox.Name = "booleanGroupBox";
+      this.booleanGroupBox.Size = new System.Drawing.Size(119, 595);
+      this.booleanGroupBox.TabIndex = 7;
+      this.booleanGroupBox.TabStop = false;
+      this.booleanGroupBox.Text = "Boolean";
+      //
+      // groupBox4
+      //
+      this.groupBox4.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.groupBox4.Controls.Add(this.listBox3);
+      this.groupBox4.Location = new System.Drawing.Point(1003, 3);
+      this.groupBox4.Name = "groupBox4";
+      this.groupBox4.Size = new System.Drawing.Size(253, 595);
+      this.groupBox4.TabIndex = 6;
+      this.groupBox4.TabStop = false;
+      this.groupBox4.Text = "Float";
+      //
+      // listBox3
+      //
+      this.listBox3.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.listBox3.FormattingEnabled = true;
+      this.listBox3.HorizontalScrollbar = true;
+      this.listBox3.Location = new System.Drawing.Point(6, 19);
+      this.listBox3.Name = "listBox3";
+      this.listBox3.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.listBox3.Size = new System.Drawing.Size(107, 563);
+      this.listBox3.TabIndex = 4;
+      //
+      // booleanList
+      //
+      this.booleanList.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.booleanList.FormattingEnabled = true;
+      this.booleanList.HorizontalScrollbar = true;
+      this.booleanList.Location = new System.Drawing.Point(6, 19);
+      this.booleanList.Name = "booleanList";
+      this.booleanList.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.booleanList.Size = new System.Drawing.Size(107, 563);
+      this.booleanList.TabIndex = 4;
+      //
+      // stringGroupBox
+      //
+      this.stringGroupBox.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.stringGroupBox.Controls.Add(this.groupBox6);
+      this.stringGroupBox.Controls.Add(this.stringList);
+      this.stringGroupBox.Location = new System.Drawing.Point(1043, 3);
+      this.stringGroupBox.Name = "stringGroupBox";
+      this.stringGroupBox.Size = new System.Drawing.Size(120, 595);
+      this.stringGroupBox.TabIndex = 8;
+      this.stringGroupBox.TabStop = false;
+      this.stringGroupBox.Text = "String";
+      //
+      // groupBox6
+      //
+      this.groupBox6.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.groupBox6.Controls.Add(this.listBox5);
+      this.groupBox6.Location = new System.Drawing.Point(1003, 3);
+      this.groupBox6.Name = "groupBox6";
+      this.groupBox6.Size = new System.Drawing.Size(254, 595);
+      this.groupBox6.TabIndex = 6;
+      this.groupBox6.TabStop = false;
+      this.groupBox6.Text = "Float";
+      //
+      // listBox5
+      //
+      this.listBox5.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.listBox5.FormattingEnabled = true;
+      this.listBox5.HorizontalScrollbar = true;
+      this.listBox5.Location = new System.Drawing.Point(6, 19);
+      this.listBox5.Name = "listBox5";
+      this.listBox5.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.listBox5.Size = new System.Drawing.Size(108, 563);
+      this.listBox5.TabIndex = 4;
+      //
+      // stringList
+      //
+      this.stringList.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.stringList.FormattingEnabled = true;
+      this.stringList.HorizontalScrollbar = true;
+      this.stringList.Location = new System.Drawing.Point(6, 19);
+      this.stringList.Name = "stringList";
+      this.stringList.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.stringList.Size = new System.Drawing.Size(108, 563);
+      this.stringList.TabIndex = 4;
+      //
+      // charGroupBox
+      //
+      this.charGroupBox.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.charGroupBox.Controls.Add(this.groupBox8);
+      this.charGroupBox.Controls.Add(this.charList);
+      this.charGroupBox.Location = new System.Drawing.Point(1169, 3);
+      this.charGroupBox.Name = "charGroupBox";
+      this.charGroupBox.Size = new System.Drawing.Size(119, 595);
+      this.charGroupBox.TabIndex = 9;
+      this.charGroupBox.TabStop = false;
+      this.charGroupBox.Text = "Char";
+      //
+      // groupBox8
+      //
+      this.groupBox8.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.groupBox8.Controls.Add(this.listBox7);
+      this.groupBox8.Location = new System.Drawing.Point(1003, 3);
+      this.groupBox8.Name = "groupBox8";
+      this.groupBox8.Size = new System.Drawing.Size(253, 595);
+      this.groupBox8.TabIndex = 6;
+      this.groupBox8.TabStop = false;
+      this.groupBox8.Text = "Float";
+      //
+      // listBox7
+      //
+      this.listBox7.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.listBox7.FormattingEnabled = true;
+      this.listBox7.HorizontalScrollbar = true;
+      this.listBox7.Location = new System.Drawing.Point(6, 19);
+      this.listBox7.Name = "listBox7";
+      this.listBox7.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.listBox7.Size = new System.Drawing.Size(107, 563);
+      this.listBox7.TabIndex = 4;
+      //
+      // charList
+      //
+      this.charList.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.charList.FormattingEnabled = true;
+      this.charList.HorizontalScrollbar = true;
+      this.charList.Location = new System.Drawing.Point(6, 19);
+      this.charList.Name = "charList";
+      this.charList.SelectionMode = System.Windows.Forms.SelectionMode.None;
+      this.charList.Size = new System.Drawing.Size(107, 563);
+      this.charList.TabIndex = 4;
+      //
+      // tabPage2
+      //
+      this.tabPage2.Controls.Add(this.resultsDataGrid);
+      this.tabPage2.Location = new System.Drawing.Point(4, 22);
+      this.tabPage2.Name = "tabPage2";
+      this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPage2.Size = new System.Drawing.Size(1261, 672);
+      this.tabPage2.TabIndex = 1;
+      this.tabPage2.Text = "Results";
+      this.tabPage2.UseVisualStyleBackColor = true;
+      //
+      // resultsDataGrid
+      //
+      this.resultsDataGrid.AllowUserToAddRows = false;
+      this.resultsDataGrid.AllowUserToDeleteRows = false;
+      this.resultsDataGrid.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.resultsDataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+      this.resultsDataGrid.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;
+      this.resultsDataGrid.Location = new System.Drawing.Point(7, 7);
+      this.resultsDataGrid.Name = "resultsDataGrid";
+      this.resultsDataGrid.ReadOnly = true;
+      this.resultsDataGrid.Size = new System.Drawing.Size(1248, 659);
+      this.resultsDataGrid.TabIndex = 0;
       //
       // PushProgramDebuggerView
@@ -342,34 +603,31 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.skipNoopsCheckBox);
-      this.Controls.Add(this.runButton);
-      this.Controls.Add(this.stepWidthBox);
-      this.Controls.Add(this.tableLayoutPanel1);
-      this.Controls.Add(this.exampleComboBox);
-      this.Controls.Add(this.label1);
-      this.Controls.Add(this.resetButton);
-      this.Controls.Add(this.stepButton);
+      this.Controls.Add(this.tabControl);
       this.Name = "PushProgramDebuggerView";
-      this.Size = new System.Drawing.Size(1058, 727);
-      this.Controls.SetChildIndex(this.stepButton, 0);
-      this.Controls.SetChildIndex(this.resetButton, 0);
-      this.Controls.SetChildIndex(this.label1, 0);
-      this.Controls.SetChildIndex(this.exampleComboBox, 0);
-      this.Controls.SetChildIndex(this.tableLayoutPanel1, 0);
+      this.Size = new System.Drawing.Size(1278, 727);
+      this.Controls.SetChildIndex(this.tabControl, 0);
       this.Controls.SetChildIndex(this.nameLabel, 0);
       this.Controls.SetChildIndex(this.nameTextBox, 0);
       this.Controls.SetChildIndex(this.infoLabel, 0);
-      this.Controls.SetChildIndex(this.stepWidthBox, 0);
-      this.Controls.SetChildIndex(this.runButton, 0);
-      this.Controls.SetChildIndex(this.skipNoopsCheckBox, 0);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.execGroupBox.ResumeLayout(false);
+      this.tabControl.ResumeLayout(false);
+      this.tabPage1.ResumeLayout(false);
+      this.tabPage1.PerformLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.stepWidthBox)).EndInit();
+      this.debugTableLayout.ResumeLayout(false);
+      this.codeGroupBox.ResumeLayout(false);
+      this.nameGroupBox.ResumeLayout(false);
       this.integerGroupBox.ResumeLayout(false);
       this.floatGroupBox.ResumeLayout(false);
-      this.codeGroupBox.ResumeLayout(false);
+      this.groupBox2.ResumeLayout(false);
+      this.execGroupBox.ResumeLayout(false);
       this.booleanGroupBox.ResumeLayout(false);
-      this.nameGroupBox.ResumeLayout(false);
-      this.tableLayoutPanel1.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.stepWidthBox)).EndInit();
+      this.groupBox4.ResumeLayout(false);
+      this.stringGroupBox.ResumeLayout(false);
+      this.groupBox6.ResumeLayout(false);
+      this.charGroupBox.ResumeLayout(false);
+      this.groupBox8.ResumeLayout(false);
+      this.tabPage2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.resultsDataGrid)).EndInit();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -379,24 +637,41 @@
     #endregion
 
+    private System.Windows.Forms.TabControl tabControl;
+    private System.Windows.Forms.TabPage tabPage1;
+    private System.Windows.Forms.CheckBox skipNoopsCheckBox;
+    private System.Windows.Forms.Button runButton;
+    private System.Windows.Forms.NumericUpDown stepWidthBox;
+    private System.Windows.Forms.Button resetButton;
+    private System.Windows.Forms.Button stepButton;
+    private System.Windows.Forms.ComboBox exampleComboBox;
+    private System.Windows.Forms.Label label1;
+    private System.Windows.Forms.TableLayoutPanel debugTableLayout;
+    private System.Windows.Forms.GroupBox codeGroupBox;
+    private System.Windows.Forms.ListBox codeList;
+    private System.Windows.Forms.GroupBox nameGroupBox;
+    private System.Windows.Forms.ListBox nameList;
+    private System.Windows.Forms.GroupBox integerGroupBox;
+    private System.Windows.Forms.ListBox integerList;
+    private System.Windows.Forms.GroupBox floatGroupBox;
+    private System.Windows.Forms.ListBox floatList;
     private System.Windows.Forms.GroupBox execGroupBox;
-    private System.Windows.Forms.GroupBox integerGroupBox;
-    private System.Windows.Forms.GroupBox floatGroupBox;
-    private System.Windows.Forms.GroupBox codeGroupBox;
+    private System.Windows.Forms.ListView execList;
+    private System.Windows.Forms.TabPage tabPage2;
+    private System.Windows.Forms.DataGridView resultsDataGrid;
+    private System.Windows.Forms.Button simplifyButton;
+    private System.Windows.Forms.GroupBox stringGroupBox;
+    private System.Windows.Forms.GroupBox groupBox6;
+    private System.Windows.Forms.ListBox listBox5;
+    private System.Windows.Forms.ListBox stringList;
     private System.Windows.Forms.GroupBox booleanGroupBox;
-    private System.Windows.Forms.GroupBox nameGroupBox;
-    private System.Windows.Forms.ListBox integerList;
-    private System.Windows.Forms.ListBox floatList;
-    private System.Windows.Forms.ListBox codeList;
+    private System.Windows.Forms.GroupBox groupBox4;
+    private System.Windows.Forms.ListBox listBox3;
     private System.Windows.Forms.ListBox booleanList;
-    private System.Windows.Forms.ListBox nameList;
-    private System.Windows.Forms.Button stepButton;
-    private System.Windows.Forms.Button resetButton;
-    private System.Windows.Forms.Label label1;
-    private System.Windows.Forms.ComboBox exampleComboBox;
-    private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
-    private System.Windows.Forms.NumericUpDown stepWidthBox;
-    private System.Windows.Forms.Button runButton;
-    private System.Windows.Forms.CheckBox skipNoopsCheckBox;
-    private System.Windows.Forms.ListView execList;
+    private System.Windows.Forms.GroupBox groupBox2;
+    private System.Windows.Forms.ListBox listBox2;
+    private System.Windows.Forms.GroupBox charGroupBox;
+    private System.Windows.Forms.GroupBox groupBox8;
+    private System.Windows.Forms.ListBox listBox7;
+    private System.Windows.Forms.ListBox charList;
   }
 }
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.cs
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.cs	(revision 14747)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.cs	(revision 14777)
@@ -9,7 +9,10 @@
 
   using HeuristicLab.BenchmarkSuite;
+  using HeuristicLab.BenchmarkSuite.Problems;
+  using HeuristicLab.BenchmarkSuite.Views;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
   using HeuristicLab.Problems.ProgramSynthesis.Push.Problem;
+  using HeuristicLab.Problems.ProgramSynthesis.Push.Stack;
   using HeuristicLab.Random;
 
@@ -18,4 +21,5 @@
   public partial class PushProgramDebuggerView : NamedItemView {
     private const string Separator = ", ";
+    private const string EmptySign = "-";
     private PushProgram program;
 
@@ -31,14 +35,26 @@
       Name = "Push Program Debugger";
 
+      InitEvents();
+      InitExecList();
+    }
+
+    private void InitEvents() {
       exampleComboBox.SelectedIndexChanged += SelectedExampleIndexChanged;
       runButton.Click += RunButtonClick;
       resetButton.Click += ResetButtonClick;
       stepButton.Click += StepButtonClick;
-
+      simplifyButton.Click += SimplifyButtonClick;
+    }
+
+    private void SimplifyButtonClick(object sender, EventArgs e) {
+
+    }
+
+    private void InitExecList() {
       execList.RetrieveVirtualItem += ExecListRetrieveVirtualItem;
       execList.CacheVirtualItems += ExecListCacheVirtualItems;
 
       execList.View = View.Details;
-      execList.HeaderStyle = ColumnHeaderStyle.Nonclickable;
+      execList.HeaderStyle = ColumnHeaderStyle.None;
       execList.AutoResizeColumns(ColumnHeaderAutoResizeStyle.None);
       execList.Columns.Add(new ColumnHeader { Width = execList.Width - 40 });
@@ -111,16 +127,20 @@
 
     private void SetReadonlyFields() {
-      exampleComboBox.Enabled = !ReadOnly;
-      execList.Enabled = !ReadOnly;
-      codeList.Enabled = !ReadOnly;
-      nameList.Enabled = !ReadOnly;
-      integerList.Enabled = !ReadOnly;
-      floatList.Enabled = !ReadOnly;
-      booleanList.Enabled = !ReadOnly;
-      stepButton.Enabled = !ReadOnly;
-      runButton.Enabled = !ReadOnly;
-      resetButton.Enabled = !ReadOnly;
-      skipNoopsCheckBox.Enabled = !ReadOnly;
-      stepWidthBox.Enabled = !ReadOnly;
+      var enabled = !ReadOnly;
+
+      exampleComboBox.Enabled = enabled;
+      execList.Enabled = enabled;
+      codeList.Enabled = enabled;
+      nameList.Enabled = enabled;
+      integerList.Enabled = enabled;
+      floatList.Enabled = enabled;
+      booleanList.Enabled = enabled;
+      stringList.Enabled = enabled;
+      charList.Enabled = enabled;
+      stepButton.Enabled = enabled;
+      runButton.Enabled = enabled;
+      resetButton.Enabled = enabled;
+      skipNoopsCheckBox.Enabled = enabled;
+      stepWidthBox.Enabled = enabled;
     }
 
@@ -200,5 +220,5 @@
       interpreter.Clear();
 
-      var example = Content.DataDescriptor.Examples[this.exampleComboBox.SelectedIndex];
+      var example = Content.Data.Examples[this.exampleComboBox.SelectedIndex];
 
       interpreter.BooleanStack.Push(example.InputBoolean);
@@ -217,9 +237,12 @@
       if (Content == null) return;
 
+      this.nameTextBox.Text = "Push Solution";
+
       var random = Content.Random ?? new FastRandom();
       interpreter = new PushInterpreter(Content.Config, random);
       program = Content.IntegerVector.MapToPushProgram(Content.Config.EnabledExpressions);
 
-      UpdateExamples(Content.DataDescriptor);
+      UpdateExamples(Content.Data);
+      InitResultGrid();
 
       if (this.exampleComboBox.SelectedIndex < 0) {
@@ -228,4 +251,102 @@
         Reset();
       }
+    }
+
+    private void InitResultGrid() {
+      var cellTemplate = new DataGridViewTextBoxCell();
+
+      for (var i = 0; i < Content.Data.InputArgumentTypes.Length; i++) {
+        var headerTypeName = ViewHelper.GetHeaderTypeName(Content.Data.InputArgumentTypes[i]);
+        var column = new DataGridViewColumn {
+          HeaderText = string.Format("Input {0} : {1}", i + 1, headerTypeName),
+          AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill,
+          CellTemplate = cellTemplate
+        };
+
+        resultsDataGrid.Columns.Add(column);
+      }
+
+      for (var i = 0; i < Content.Data.OutputArgumentTypes.Length; i++) {
+        var headerTypeName = ViewHelper.GetHeaderTypeName(Content.Data.OutputArgumentTypes[i]);
+
+        var estimatedOutputColumn = new DataGridViewColumn {
+          HeaderText = string.Format("Estimated Output {0} : {1}", i + 1, headerTypeName),
+          AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill,
+          CellTemplate = cellTemplate
+        };
+
+        var outputColumn = new DataGridViewColumn {
+          HeaderText = string.Format("Output {0} : {1}", i + 1, headerTypeName),
+          AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill,
+          CellTemplate = cellTemplate
+        };
+
+        resultsDataGrid.Columns.Add(estimatedOutputColumn);
+        resultsDataGrid.Columns.Add(outputColumn);
+      }
+
+      resultsDataGrid.Columns.Add(
+        new DataGridViewColumn {
+          HeaderText = "Absolute Diff.",
+          AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader,
+          CellTemplate = cellTemplate
+        });
+
+      resultsDataGrid.Columns.Add(
+        new DataGridViewColumn {
+          HeaderText = "Relative Diff.",
+          AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader,
+          CellTemplate = cellTemplate,
+        });
+
+      var pool = new PushInterpreterPool(Content.Config);
+      var program = Content.IntegerVector.MapToPushProgram(Content.Config.EnabledExpressions);
+
+      using (var pushInterpreter = pool.Create(Content.Random)) {
+        foreach (var example in Content.Data.Examples) {
+          var row = new DataGridViewRow();
+          var absoluteDiff = PushEvaluator.Evaluate(pushInterpreter, program, example, Content.Data.WorstResult);
+          var relativeDiff = absoluteDiff / Math.Abs(Content.Data.BestResult - Content.Data.WorstResult) * 100d;
+
+          row.HeaderCell.Value = row.Index + 1;
+          row.CreateCells(resultsDataGrid);
+
+          for (var i = 0; i < Content.Data.InputArgumentTypes.Length; i++) {
+            row.Cells[i].Value = ViewHelper.StringifyInput(Content.Data.InputArgumentTypes[i], example, Separator);
+          }
+
+          for (var i = 0; i < Content.Data.OutputArgumentTypes.Length; i++) {
+            row.Cells[Content.Data.InputArgumentTypes.Length + i * 2].Value = ViewHelper.StringifyOutput(Content.Data.OutputArgumentTypes[i], example, Separator);
+            row.Cells[Content.Data.InputArgumentTypes.Length + i * 2 + 1].Value = StringifyResult(Content.Data.OutputArgumentTypes[i], pushInterpreter, example, Separator);
+          }
+
+          row.Cells[Content.Data.TotalArgumentCount + 1].Value = absoluteDiff;
+          row.Cells[Content.Data.TotalArgumentCount + 2].Value = relativeDiff + "%";
+
+          this.resultsDataGrid.Rows.Add(row);
+          pushInterpreter.Clear();
+        }
+      }
+    }
+
+    private string StringifyResult(ExampleArgumentType type, IPushInterpreter interpreter, Example example, string valueSeparator) {
+      switch (type) {
+        case ExampleArgumentType.Integer:
+        case ExampleArgumentType.IntegerCollection: return interpreter.IntegerStack.IsEmpty ? EmptySign : string.Join(valueSeparator, interpreter.IntegerStack.Peek(GetCount(interpreter.IntegerStack, example.OutputInt)));
+
+        case ExampleArgumentType.Float:
+        case ExampleArgumentType.FloatCollection: return interpreter.FloatStack.IsEmpty ? EmptySign : string.Join(valueSeparator, interpreter.FloatStack.Peek(GetCount(interpreter.FloatStack, example.OutputFloat)));
+
+        case ExampleArgumentType.Bool: return interpreter.BooleanStack.IsEmpty ? EmptySign : interpreter.BooleanStack.Top.ToString();
+        case ExampleArgumentType.Char: return interpreter.CharStack.IsEmpty ? EmptySign : interpreter.CharStack.Top.ToString();
+
+        case ExampleArgumentType.String:
+        case ExampleArgumentType.StringCollection: return interpreter.StringStack.IsEmpty ? EmptySign : string.Join(valueSeparator, interpreter.StringStack.Peek(GetCount(interpreter.StringStack, example.OutputString)));
+        default: return string.Empty;
+      }
+    }
+
+    private int GetCount<T>(IStack<T> stack, T[] data) {
+      return Math.Max(0, Math.Min(data.Length, stack.Count));
     }
 
@@ -251,66 +372,28 @@
         return;
 
-      if (interpreter.Configuration.IsCodeStackEnabled) {
-        this.codeList.Enabled = true;
-
-        foreach (var item in interpreter.CodeStack.Reverse())
-          this.codeList.Items.Add(item);
-
-        this.codeGroupBox.Text = string.Format("Code [{0}]", this.codeList.Items.Count);
+      ManageStackType(interpreter.Configuration.IsCodeStackEnabled, codeList, codeGroupBox, interpreter.CodeStack, "Code");
+      ManageStackType(interpreter.Configuration.IsIntegerStackEnabled, integerList, integerGroupBox, interpreter.IntegerStack, "Integer");
+      ManageStackType(interpreter.Configuration.IsFloatStackEnabled, floatList, floatGroupBox, interpreter.FloatStack, "Float");
+      ManageStackType(interpreter.Configuration.IsBooleanStackEnabled, booleanList, booleanGroupBox, interpreter.BooleanStack, "Boolean");
+      ManageStackType(interpreter.Configuration.IsNameStackEnabled, nameList, nameGroupBox, interpreter.NameStack, "Name");
+      ManageStackType(interpreter.Configuration.IsStringStackEnabled, stringList, stringGroupBox, interpreter.StringStack, "String");
+      ManageStackType(interpreter.Configuration.IsCharStackEnabled, charList, charGroupBox, interpreter.CharStack, "Char");
+    }
+
+    private void ManageStackType<T>(bool enabled, ListBox listbox, GroupBox groupBox, IStack<T> stack, string name) {
+      if (enabled) {
+        listbox.Enabled = true;
+
+        foreach (var item in stack.Reverse())
+          listbox.Items.Add(item);
+
+        groupBox.Text = string.Format("{0} [{1}]", name, listbox.Items.Count);
       } else {
-        this.codeList.Enabled = false;
-        this.codeGroupBox.Text = "Code - Disabled";
-      }
-
-      if (interpreter.Configuration.IsIntegerStackEnabled) {
-        this.integerList.Enabled = true;
-
-        foreach (var item in interpreter.IntegerStack.Reverse())
-          this.integerList.Items.Add(item);
-
-        this.integerGroupBox.Text = string.Format("Integer [{0}]", this.integerList.Items.Count);
-      } else {
-        this.integerList.Enabled = false;
-        this.integerGroupBox.Text = "Integer - Disabled";
-      }
-
-      if (interpreter.Configuration.IsFloatStackEnabled) {
-        this.floatList.Enabled = true;
-
-        foreach (var item in interpreter.FloatStack.Reverse())
-          this.floatList.Items.Add(item);
-
-        this.floatGroupBox.Text = string.Format("Float [{0}]", this.floatList.Items.Count);
-      } else {
-        this.floatList.Enabled = false;
-        this.floatGroupBox.Text = "Float - Disabled";
-      }
-
-      if (interpreter.Configuration.IsBooleanStackEnabled) {
-        this.booleanList.Enabled = true;
-
-        foreach (var item in interpreter.BooleanStack.Reverse())
-          this.booleanList.Items.Add(item);
-
-        this.booleanGroupBox.Text = string.Format("Boolean [{0}]", this.booleanList.Items.Count);
-      } else {
-        this.booleanList.Enabled = false;
-        this.booleanGroupBox.Text = "Boolean - Disabled";
-      }
-
-      if (interpreter.Configuration.IsNameStackEnabled) {
-        this.nameList.Enabled = true;
-
-        foreach (var item in interpreter.NameStack.Reverse())
-          this.nameList.Items.Add(item);
-
-        this.nameGroupBox.Text = string.Format("Name [{0}]", this.nameList.Items.Count);
-      } else {
-        this.nameList.Enabled = false;
-        this.nameGroupBox.Text = "Name - Disabled";
-      }
-    }
-
-    private void UpdateExamples(IBenchmarkSuiteDataDescriptor data) {
+        listbox.Enabled = false;
+        groupBox.Text = string.Format("{0} - DISABLED", name);
+      }
+    }
+
+    private void UpdateExamples(Data data) {
       if (data == null) return;
 
Index: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.resx
===================================================================
--- branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.resx	(revision 14747)
+++ branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramDebuggerView.resx	(revision 14777)
@@ -125,13 +125,12 @@
   </metadata>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.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">
+  <data name="runButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
-        JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABFklE
-        QVQ4T2P4//8/Bk7oecKMTRwbxioINEAGiJmwyaFjrIKFs57/j5/8VokYQ7AK5s589j+h+97/uAmvNQh5
-        B6tgxpSn/+ft//0/qOHma6ABtvgMwSoI1PB/9r5f/zu3/v3vVnr5P5Bvj8sQDAEQjux69H/Ktl//S5b+
-        /Z8w/e9/m9yzOA1B4cBwYPPD/61r34M1G5d8+S8dfe2/ceSy/w5FZ+PRDUHRCMMeVff/l8x9B9es6NLz
-        X9pndSA2tRgCIGxfevd/YMszJM0rvbCpA2GsghZ5d/7bFFyBabbBpgaGsQoaZt0Ga5byWu6KTR4ZYxXU
-        SbsBtHmNLzY5dIxVUMp7rZ+09wqciQcZYxUkBWMVJB7/ZwAA4djU9I5dK1UAAAAASUVORK5CYII=
+        JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAsElE
+        QVQ4T2P4//8/RRirYNn+bDds4tgwVsGEGRH/iTUEqyDIAMsyfaIMwSoYNSXo/4Zbi4kyBKtg8ARvkEai
+        DMEq6NPlDDYAhKMWBeA1BEMAhB2bLf5nbIgFa7Zt1v+vU6zwXyKNG0SroatF4cCweY0eimb+BBasmkEY
+        QwCE9UqVidIMwlgFVfKliNIMwlgFpTMEidIMwlgFRZI5idIMwlgFidUMwlgFScFYBYnH/xkAJP3E6UxO
+        vJ8AAAAASUVORK5CYII=
 </value>
   </data>
@@ -197,12 +196,13 @@
 </value>
   </data>
-  <data name="runButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="stepButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
-        JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAsElE
-        QVQ4T2P4//8/RRirYNn+bDds4tgwVsGEGRH/iTUEqyDIAMsyfaIMwSoYNSXo/4Zbi4kyBKtg8ARvkEai
-        DMEq6NPlDDYAhKMWBeA1BEMAhB2bLf5nbIgFa7Zt1v+vU6zwXyKNG0SroatF4cCweY0eimb+BBasmkEY
-        QwCE9UqVidIMwlgFVfKliNIMwlgFpTMEidIMwlgFRZI5idIMwlgFidUMwlgFScFYBYnH/xkAJP3E6UxO
-        vJ8AAAAASUVORK5CYII=
+        JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABFklE
+        QVQ4T2P4//8/Bk7oecKMTRwbxioINEAGiJmwyaFjrIKFs57/j5/8VokYQ7AK5s589j+h+97/uAmvNQh5
+        B6tgxpSn/+ft//0/qOHma6ABtvgMwSoI1PB/9r5f/zu3/v3vVnr5P5Bvj8sQDAEQjux69H/Ktl//S5b+
+        /Z8w/e9/m9yzOA1B4cBwYPPD/61r34M1G5d8+S8dfe2/ceSy/w5FZ+PRDUHRCMMeVff/l8x9B9es6NLz
+        X9pndSA2tRgCIGxfevd/YMszJM0rvbCpA2GsghZ5d/7bFFyBabbBpgaGsQoaZt0Ga5byWu6KTR4ZYxXU
+        SbsBtHmNLzY5dIxVUMp7rZ+09wqciQcZYxUkBWMVJB7/ZwAA4djU9I5dK1UAAAAASUVORK5CYII=
 </value>
   </data>
