Index: /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelEvaluationView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelEvaluationView.Designer.cs	(revision 15134)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelEvaluationView.Designer.cs	(revision 15134)
@@ -0,0 +1,99 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Algorithms.DataAnalysis.Views {
+  partial class GradientBoostedTreesModelEvaluationView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.listBox = new System.Windows.Forms.ListBox();
+      this.SuspendLayout();
+      // 
+      // viewHost
+      // 
+      this.viewHost.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.viewHost.Caption = "View";
+      this.viewHost.Content = null;
+      this.viewHost.Enabled = false;
+      this.viewHost.Location = new System.Drawing.Point(126, 3);
+      this.viewHost.Name = "viewHost";
+      this.viewHost.ReadOnly = false;
+      this.viewHost.Size = new System.Drawing.Size(220, 277);
+      this.viewHost.TabIndex = 0;
+      this.viewHost.ViewsLabelVisible = true;
+      this.viewHost.ViewType = null;
+      // 
+      // listBox
+      // 
+      this.listBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left)));
+      this.listBox.Location = new System.Drawing.Point(3, 3);
+      this.listBox.Name = "listBox";
+      this.listBox.Size = new System.Drawing.Size(117, 277);
+      this.listBox.TabIndex = 1;
+      this.listBox.SelectedIndexChanged += new System.EventHandler(this.listBox_SelectedIndexChanged);
+      this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick);
+      // 
+      // GradientBoostedTreesModelEvaluationView
+      // 
+      this.AllowDrop = true;
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+      this.Controls.Add(this.viewHost);
+      this.Controls.Add(this.listBox);
+      this.Name = "GradientBoostedTreesModelEvaluationView";
+      this.Size = new System.Drawing.Size(349, 289);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private MainForm.WindowsForms.ViewHost viewHost;
+    private System.Windows.Forms.ListBox listBox;
+
+
+
+
+  }
+}
Index: /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelEvaluationView.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelEvaluationView.cs	(revision 15134)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelEvaluationView.cs	(revision 15134)
@@ -0,0 +1,87 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.MainForm;
+using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.DataAnalysis.Views;
+
+namespace HeuristicLab.Algorithms.DataAnalysis.Views {
+  [View("GBT Model Evaluation")]
+  [Content(typeof(GradientBoostedTreesSolution), false)]
+  public partial class GradientBoostedTreesModelEvaluationView : DataAnalysisSolutionEvaluationView {
+    public new GradientBoostedTreesSolution Content {
+      get { return (GradientBoostedTreesSolution)base.Content; }
+      set { base.Content = value; }
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      listBox.Enabled = Content != null;
+      viewHost.Enabled = Content != null;
+    }
+
+    public GradientBoostedTreesModelEvaluationView()
+      : base() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        viewHost.Content = null;
+        listBox.Items.Clear();
+      } else {
+        viewHost.Content = null;
+        listBox.Items.Clear();
+        foreach (var e in Content.Model.Models) {
+          listBox.Items.Add(e);
+        }
+      }
+    }
+
+    private void listBox_SelectedIndexChanged(object sender, System.EventArgs e) {
+      var model = listBox.SelectedItem;
+      if (model == null) viewHost.Content = null;
+      else {
+        viewHost.Content = ConvertModel(model);
+      }
+    }
+
+    private void listBox_DoubleClick(object sender, System.EventArgs e) {
+      var selectedItem = listBox.SelectedItem;
+      if (selectedItem == null) return;
+      MainFormManager.MainForm.ShowContent(ConvertModel(selectedItem));
+    }
+
+    private IContent ConvertModel(object model) {
+      var treeModel = model as RegressionTreeModel;
+      if (treeModel != null)
+        return treeModel.CreateSymbolicRegressionSolution(Content.ProblemData);
+      else {
+        var regModel = model as IRegressionModel;
+        return regModel;
+      }
+    }
+  }
+}
Index: /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelView.Designer.cs	(revision 15133)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelView.Designer.cs	(revision 15134)
@@ -74,4 +74,5 @@
       this.listBox.TabIndex = 1;
       this.listBox.SelectedIndexChanged += new System.EventHandler(this.listBox_SelectedIndexChanged);
+      this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick);
       // 
       // GradientBoostedTreesModelView
Index: /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelView.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelView.cs	(revision 15133)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesModelView.cs	(revision 15134)
@@ -20,19 +20,17 @@
 #endregion
 
-using System.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
-using HeuristicLab.Problems.DataAnalysis;
-using HeuristicLab.Problems.DataAnalysis.Views;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.Problems.DataAnalysis;                  
 
 namespace HeuristicLab.Algorithms.DataAnalysis.Views {
-  [View("Gradient boosted tree model")]
-  [Content(typeof(GradientBoostedTreesSolution), false)]
-  public partial class GradientBoostedTreesModelView : DataAnalysisSolutionEvaluationView {
-    public override Image ViewImage {
-      get { return HeuristicLab.Common.Resources.VSImageLibrary.Function; }
-    }
+  [View("Gradient boosted trees model")]
+  [Content(typeof(IGradientBoostedTreesModel), true)]
+  public partial class GradientBoostedTreesModelView : ItemView {
 
-    public new GradientBoostedTreesSolution Content {
-      get { return (GradientBoostedTreesSolution)base.Content; }
+    public new IGradientBoostedTreesModel Content {
+      get { return (IGradientBoostedTreesModel)base.Content; }
       set { base.Content = value; }
     }
@@ -57,5 +55,5 @@
         viewHost.Content = null;
         listBox.Items.Clear();
-        foreach (var e in Content.Model.Models) {
+        foreach (var e in Content.Models) {
           listBox.Items.Add(e);
         }
@@ -67,11 +65,21 @@
       if (model == null) viewHost.Content = null;
       else {
-        var treeModel = model as RegressionTreeModel;
-        if (treeModel != null)
-          viewHost.Content = treeModel.CreateSymbolicRegressionSolution(Content.ProblemData);
-        else {
-          var regModel = model as IRegressionModel;
-          viewHost.Content = regModel;
-        }
+        viewHost.Content = ConvertModel(model);
+      }
+    }
+
+    private void listBox_DoubleClick(object sender, System.EventArgs e) {
+      var selectedItem = listBox.SelectedItem;
+      if (selectedItem == null) return;
+      MainFormManager.MainForm.ShowContent(ConvertModel(selectedItem));
+    }
+
+    private IContent ConvertModel(object model) {
+      var treeModel = model as RegressionTreeModel;
+      if (treeModel != null)
+        return treeModel.CreateSymbolicRegressionModel();
+      else {
+        var regModel = model as IRegressionModel;
+        return regModel;
       }
     }
Index: able/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesSolutionView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesSolutionView.Designer.cs	(revision 15133)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Algorithms.DataAnalysis.Views {
-  partial class GradientBoostedTreesSolutionView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-    }
-
-    #endregion
-  }
-}
Index: able/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesSolutionView.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/GradientBoostedTreesSolutionView.cs	(revision 15133)
+++ 	(revision )
@@ -1,43 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.MainForm;
-using HeuristicLab.Problems.DataAnalysis.Views;
-
-namespace HeuristicLab.Algorithms.DataAnalysis.Views {
-  [Content(typeof(GradientBoostedTreesSolution), true)]
-  [View("GradientBoostedTreesSolution View")]
-  public partial class GradientBoostedTreesSolutionView : RegressionSolutionView {
-    public GradientBoostedTreesSolutionView() {
-      InitializeComponent();
-    }
-
-    protected new GradientBoostedTreesSolution Content {
-      get { return (GradientBoostedTreesSolution)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      itemsListView.Items.Remove(itemsListView.FindItemWithText("Model: Gradient boosted tree model"));
-    }
-  }
-}
Index: /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/HeuristicLab.Algorithms.DataAnalysis.Views-3.4.csproj
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/HeuristicLab.Algorithms.DataAnalysis.Views-3.4.csproj	(revision 15133)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/HeuristicLab.Algorithms.DataAnalysis.Views-3.4.csproj	(revision 15134)
@@ -125,4 +125,16 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="GradientBoostedTreesModelEvaluationView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="GradientBoostedTreesModelEvaluationView.Designer.cs">
+      <DependentUpon>GradientBoostedTreesModelEvaluationView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="GradientBoostedTreesModelView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="GradientBoostedTreesModelView.Designer.cs">
+      <DependentUpon>GradientBoostedTreesModelView.cs</DependentUpon>
+    </Compile>
     <Compile Include="OneFactorClassificationModelView.cs">
       <SubType>UserControl</SubType>
@@ -131,10 +143,4 @@
       <DependentUpon>OneFactorClassificationModelView.cs</DependentUpon>
     </Compile>
-    <Compile Include="RandomForestClassificationSolutionView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="RandomForestClassificationSolutionView.Designer.cs">
-      <DependentUpon>RandomForestClassificationSolutionView.cs</DependentUpon>
-    </Compile>
     <Compile Include="RandomForestModelView.cs">
       <SubType>UserControl</SubType>
@@ -143,15 +149,9 @@
       <DependentUpon>RandomForestModelView.cs</DependentUpon>
     </Compile>
-    <Compile Include="RandomForestRegressionSolutionView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="RandomForestRegressionSolutionView.Designer.cs">
-      <DependentUpon>RandomForestRegressionSolutionView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="GradientBoostedTreesModelView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="GradientBoostedTreesModelView.Designer.cs">
-      <DependentUpon>GradientBoostedTreesModelView.cs</DependentUpon>
+    <Compile Include="RandomForestModelEvaluationView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="RandomForestModelEvaluationView.Designer.cs">
+      <DependentUpon>RandomForestModelEvaluationView.cs</DependentUpon>
     </Compile>
     <Compile Include="MeanProdView.cs">
@@ -222,10 +222,4 @@
     <Compile Include="SupportVectorMachineModelView.Designer.cs">
       <DependentUpon>SupportVectorMachineModelView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="GradientBoostedTreesSolutionView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="GradientBoostedTreesSolutionView.Designer.cs">
-      <DependentUpon>GradientBoostedTreesSolutionView.cs</DependentUpon>
     </Compile>
   </ItemGroup>
Index: able/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestClassificationSolutionView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestClassificationSolutionView.Designer.cs	(revision 15133)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Algorithms.DataAnalysis.Views {
-  partial class RandomForestClassificationSolutionView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-    }
-
-    #endregion
-  }
-}
Index: able/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestClassificationSolutionView.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestClassificationSolutionView.cs	(revision 15133)
+++ 	(revision )
@@ -1,43 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.MainForm;
-using HeuristicLab.Problems.DataAnalysis.Views;
-
-namespace HeuristicLab.Algorithms.DataAnalysis.Views {
-  [Content(typeof(RandomForestClassificationSolution), true)]
-  [View("RandomForestClassificationSolution View")]
-  public partial class RandomForestClassificationSolutionView : ClassificationSolutionView {
-    public RandomForestClassificationSolutionView() {
-      InitializeComponent();
-    }
-
-    protected new RandomForestClassificationSolution Content {
-      get { return (RandomForestClassificationSolution)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      itemsListView.Items.Remove(itemsListView.FindItemWithText("Model: RandomForestModel"));
-    }
-  }
-}
Index: /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelEvaluationView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelEvaluationView.Designer.cs	(revision 15134)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelEvaluationView.Designer.cs	(revision 15134)
@@ -0,0 +1,104 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Algorithms.DataAnalysis.Views {
+  partial class RandomForestModelEvaluationView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      this.listBox = new System.Windows.Forms.ListBox();
+      this.SuspendLayout();
+      // 
+      // viewHost
+      // 
+      this.viewHost.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.viewHost.Caption = "View";
+      this.viewHost.Content = null;
+      this.viewHost.Enabled = false;
+      this.viewHost.Location = new System.Drawing.Point(126, 3);
+      this.viewHost.Name = "viewHost";
+      this.viewHost.ReadOnly = false;
+      this.viewHost.Size = new System.Drawing.Size(220, 277);
+      this.viewHost.TabIndex = 0;
+      this.viewHost.ViewsLabelVisible = true;
+      this.viewHost.ViewType = null;
+      // 
+      // listBox
+      // 
+      this.listBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left)));
+      this.listBox.FormatString = "Tree {0}";
+      this.listBox.Items.AddRange(new object[] {
+            "1",
+            "2",
+            "3"});
+      this.listBox.Location = new System.Drawing.Point(3, 3);
+      this.listBox.Name = "listBox";
+      this.listBox.Size = new System.Drawing.Size(117, 277);
+      this.listBox.TabIndex = 1;
+      this.listBox.SelectedIndexChanged += new System.EventHandler(this.listBox_SelectedIndexChanged);
+      this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick);
+      // 
+      // RandomForestModelEvaluationView
+      // 
+      this.AllowDrop = true;
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+      this.Controls.Add(this.viewHost);
+      this.Controls.Add(this.listBox);
+      this.Name = "RandomForestModelView";
+      this.Size = new System.Drawing.Size(349, 289);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private MainForm.WindowsForms.ViewHost viewHost;
+    private System.Windows.Forms.ListBox listBox;
+
+
+
+
+  }
+}
Index: /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelEvaluationView.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelEvaluationView.cs	(revision 15134)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelEvaluationView.cs	(revision 15134)
@@ -0,0 +1,100 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+using System;
+using System.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.MainForm;
+using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.DataAnalysis.Symbolic;
+using HeuristicLab.Problems.DataAnalysis.Symbolic.Classification;
+using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression;
+using HeuristicLab.Problems.DataAnalysis.Views;
+
+namespace HeuristicLab.Algorithms.DataAnalysis.Views {
+  [View("RF Model Evaluation")]
+  [Content(typeof(IRandomForestRegressionSolution), false)]
+  [Content(typeof(IRandomForestClassificationSolution), false)]
+  public partial class RandomForestModelEvaluationView : DataAnalysisSolutionEvaluationView {
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      listBox.Enabled = Content != null;
+      viewHost.Enabled = Content != null;
+    }
+
+    public RandomForestModelEvaluationView()
+      : base() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        viewHost.Content = null;
+        listBox.Items.Clear();
+      } else {
+        viewHost.Content = null;
+        listBox.Items.Clear();
+        var classSol = Content as IRandomForestClassificationSolution;
+        var regSol = Content as IRandomForestRegressionSolution;
+        var numTrees = classSol != null ? classSol.NumberOfTrees : regSol != null ? regSol.NumberOfTrees : 0;
+        for (int i = 0; i < numTrees; i++) {
+          listBox.Items.Add(i + 1);
+        }
+      }
+    }
+
+    private void listBox_SelectedIndexChanged(object sender, System.EventArgs e) {
+      if (listBox.SelectedItem == null) viewHost.Content = null;
+      else {
+        var idx = (int)listBox.SelectedItem;
+        viewHost.Content = CreateModel(idx);
+      }
+    }
+
+    private void listBox_DoubleClick(object sender, System.EventArgs e) {
+      var selectedItem = listBox.SelectedItem;
+      if (selectedItem == null) return;
+      var idx = (int)listBox.SelectedItem;
+      MainFormManager.MainForm.ShowContent(CreateModel(idx));
+    }
+
+    private IContent CreateModel(int idx) {
+      idx -= 1;
+      var rfModel = Content.Model as RandomForestModel;
+      if (rfModel == null) return null;
+      var regProblemData = Content.ProblemData as IRegressionProblemData;
+      var classProblemData = Content.ProblemData as IClassificationProblemData;
+      if (idx < 0 || idx >= rfModel.NumberOfTrees)
+        return null;
+      if (regProblemData != null) {
+        var syModel = new SymbolicRegressionModel(regProblemData.TargetVariable, rfModel.ExtractTree(idx),
+          new SymbolicDataAnalysisExpressionTreeLinearInterpreter());
+        return syModel.CreateRegressionSolution(regProblemData);
+      } else if (classProblemData != null) {
+        var syModel = new SymbolicDiscriminantFunctionClassificationModel(classProblemData.TargetVariable, rfModel.ExtractTree(idx),
+          new SymbolicDataAnalysisExpressionTreeLinearInterpreter(), new NormalDistributionCutPointsThresholdCalculator());
+        syModel.RecalculateModelParameters(classProblemData, classProblemData.TrainingIndices);
+        return syModel.CreateClassificationSolution(classProblemData);
+      } else throw new InvalidProgramException();
+    }
+  }
+}
Index: /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelView.Designer.cs	(revision 15133)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelView.Designer.cs	(revision 15134)
@@ -79,4 +79,5 @@
       this.listBox.TabIndex = 1;
       this.listBox.SelectedIndexChanged += new System.EventHandler(this.listBox_SelectedIndexChanged);
+      this.listBox.DoubleClick += new System.EventHandler(this.listBox_DoubleClick);
       // 
       // RandomForestModelView
Index: /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelView.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelView.cs	(revision 15133)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestModelView.cs	(revision 15134)
@@ -18,21 +18,21 @@
  * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
  */
-#endregion
+#endregion            
 
-using System.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
 using HeuristicLab.Problems.DataAnalysis;
-using HeuristicLab.Problems.DataAnalysis.Symbolic;
-using HeuristicLab.Problems.DataAnalysis.Symbolic.Classification;
+using HeuristicLab.Problems.DataAnalysis.Symbolic;                       
 using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression;
-using HeuristicLab.Problems.DataAnalysis.Views;
 
 namespace HeuristicLab.Algorithms.DataAnalysis.Views {
   [View("Random forest model")]
-  [Content(typeof(IRandomForestRegressionSolution), false)]
-  [Content(typeof(IRandomForestClassificationSolution), false)]
-  public partial class RandomForestModelView : DataAnalysisSolutionEvaluationView {
-    public override Image ViewImage {
-      get { return HeuristicLab.Common.Resources.VSImageLibrary.Function; }
+  [Content(typeof(IRandomForestModel), true)]
+  public partial class RandomForestModelView : ItemView {
+
+    public new IRandomForestModel Content {
+      get { return (IRandomForestModel)base.Content; }
+      set { base.Content = value; }
     }
 
@@ -56,7 +56,6 @@
         viewHost.Content = null;
         listBox.Items.Clear();
-        var classSol = Content as IRandomForestClassificationSolution;
-        var regSol = Content as IRandomForestRegressionSolution;
-        var numTrees = classSol != null ? classSol.NumberOfTrees : regSol != null ? regSol.NumberOfTrees : 0;
+        var rfModel = Content;
+        var numTrees = rfModel.NumberOfTrees;
         for (int i = 0; i < numTrees; i++) {
           listBox.Items.Add(i + 1);
@@ -69,22 +68,26 @@
       else {
         var idx = (int)listBox.SelectedItem;
-        idx -= 1;
-        var rfModel = Content.Model as RandomForestModel;
-        var regProblemData = Content.ProblemData as IRegressionProblemData;
-        var classProblemData = Content.ProblemData as IClassificationProblemData;
-        if (rfModel != null) {
-          if (idx < 0 || idx >= rfModel.NumberOfTrees) return;
-          if (regProblemData != null) {
-            var syModel = new SymbolicRegressionModel(regProblemData.TargetVariable, rfModel.ExtractTree(idx),
-              new SymbolicDataAnalysisExpressionTreeLinearInterpreter());
-            viewHost.Content = syModel.CreateRegressionSolution(regProblemData);
-          } else if (classProblemData != null) {
-            var syModel = new SymbolicDiscriminantFunctionClassificationModel(classProblemData.TargetVariable, rfModel.ExtractTree(idx),
-              new SymbolicDataAnalysisExpressionTreeLinearInterpreter(), new NormalDistributionCutPointsThresholdCalculator());
-            syModel.RecalculateModelParameters(classProblemData, classProblemData.TrainingIndices);
-            viewHost.Content = syModel.CreateClassificationSolution(classProblemData);
-          }
-        }
+        viewHost.Content = CreateModel(idx);
       }
+    }
+
+    private void listBox_DoubleClick(object sender, System.EventArgs e) {
+      var selectedItem = listBox.SelectedItem;
+      if (selectedItem == null) return;
+      var idx = (int)listBox.SelectedItem;
+      MainFormManager.MainForm.ShowContent(CreateModel(idx));
+    }
+
+    private IContent CreateModel(int idx) {
+      idx -= 1;
+      var rfModel = Content;
+      var rfClassModel = rfModel as IClassificationModel; // rfModel is always a IRegressionModel and a IClassificationModel
+      var targetVariable = rfClassModel.TargetVariable;
+      if (rfModel == null) return null;
+      if (idx < 0 || idx >= rfModel.NumberOfTrees)
+        return null;
+      var syModel = new SymbolicRegressionModel(targetVariable, rfModel.ExtractTree(idx),
+          new SymbolicDataAnalysisExpressionTreeLinearInterpreter());
+      return syModel;
     }
   }
Index: able/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestRegressionSolutionView.Designer.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestRegressionSolutionView.Designer.cs	(revision 15133)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Algorithms.DataAnalysis.Views {
-  partial class RandomForestRegressionSolutionView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
-    }
-
-    #endregion
-  }
-}
Index: able/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestRegressionSolutionView.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis.Views/3.4/RandomForestRegressionSolutionView.cs	(revision 15133)
+++ 	(revision )
@@ -1,43 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using HeuristicLab.MainForm;
-using HeuristicLab.Problems.DataAnalysis.Views;
-
-namespace HeuristicLab.Algorithms.DataAnalysis.Views {
-  [Content(typeof(RandomForestRegressionSolution), true)]
-  [View("RandomForestRegressionSolution View")]
-  public partial class RandomForestRegressionSolutionView : RegressionSolutionView {
-    public RandomForestRegressionSolutionView() {
-      InitializeComponent();
-    }
-
-    protected new RandomForestRegressionSolution Content {
-      get { return (RandomForestRegressionSolution)base.Content; }
-      set { base.Content = value; }
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      itemsListView.Items.Remove(itemsListView.FindItemWithText("Model: RandomForestModel"));
-    }
-  }
-}
Index: /stable/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesModel.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesModel.cs	(revision 15133)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesModel.cs	(revision 15134)
@@ -31,5 +31,5 @@
 namespace HeuristicLab.Algorithms.DataAnalysis {
   [StorableClass]
-  [Item("Gradient boosted tree model", "")]
+  [Item("Gradient boosted trees model", "")]
   // this is essentially a collection of weighted regression models
   public sealed class GradientBoostedTreesModel : RegressionModel, IGradientBoostedTreesModel {
Index: /stable/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/RegressionTreeModel.cs
===================================================================
--- /stable/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/RegressionTreeModel.cs	(revision 15133)
+++ /stable/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/RegressionTreeModel.cs	(revision 15134)
@@ -219,4 +219,12 @@
     /// <returns>A new symbolic regression solution which matches the tree model</returns>
     public ISymbolicRegressionSolution CreateSymbolicRegressionSolution(IRegressionProblemData problemData) {
+      return CreateSymbolicRegressionModel().CreateRegressionSolution(problemData);
+    }
+
+    /// <summary>
+    /// Transforms the tree model to a symbolic regression model
+    /// </summary>
+    /// <returns>A new symbolic regression model which matches the tree model</returns>
+    public SymbolicRegressionModel CreateSymbolicRegressionModel() {
       var rootSy = new ProgramRootSymbol();
       var startSy = new StartSymbol();
@@ -228,6 +236,5 @@
       var rootNode = rootSy.CreateTreeNode();
       rootNode.AddSubtree(startNode);
-      var model = new SymbolicRegressionModel(TargetVariable, new SymbolicExpressionTree(rootNode), new SymbolicDataAnalysisExpressionTreeLinearInterpreter());
-      return model.CreateRegressionSolution(problemData);
+      return new SymbolicRegressionModel(TargetVariable, new SymbolicExpressionTree(rootNode), new SymbolicDataAnalysisExpressionTreeLinearInterpreter());
     }
 
Index: /stable/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionExcelFormatter.cs
===================================================================
--- /stable/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionExcelFormatter.cs	(revision 15133)
+++ /stable/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionExcelFormatter.cs	(revision 15134)
@@ -78,9 +78,8 @@
     }
 
-    public string FormatWithMapping(ISymbolicExpressionTree symbolicExpressionTree, Dictionary<string,string> variableNameMapping)
-    {
-      foreach(var kvp in variableNameMapping) this.variableNameMapping.Add(kvp.Key,kvp.Value);
+    public string FormatWithMapping(ISymbolicExpressionTree symbolicExpressionTree, Dictionary<string, string> variableNameMapping) {
+      foreach (var kvp in variableNameMapping) this.variableNameMapping.Add(kvp.Key, kvp.Value);
       var stringBuilder = new StringBuilder();
-      
+
       stringBuilder.Append("=");
       stringBuilder.Append(FormatRecursively(symbolicExpressionTree.Root));
@@ -93,6 +92,6 @@
     }
 
-    private Dictionary<string,string> CalculateVariableMapping(ISymbolicExpressionTree tree, IDataset dataset) {
-      var mapping = new Dictionary<string,string>();
+    private Dictionary<string, string> CalculateVariableMapping(ISymbolicExpressionTree tree, IDataset dataset) {
+      var mapping = new Dictionary<string, string>();
       int inputIndex = 0;
       var usedVariables = tree.IterateNodesPrefix().OfType<IVariableTreeNode>().Select(v => v.VariableName).Distinct().ToArray();
@@ -241,16 +240,27 @@
       } else if (symbol is VariableCondition) {
         VariableConditionTreeNode variableConditionTreeNode = node as VariableConditionTreeNode;
-        double threshold = variableConditionTreeNode.Threshold;
-        double slope = variableConditionTreeNode.Slope;
-        string p = "(1 / (1 + EXP(-" + slope.ToString(CultureInfo.InvariantCulture) + " * (" + GetColumnToVariableName(variableConditionTreeNode.VariableName) + "-" + threshold.ToString(CultureInfo.InvariantCulture) + "))))";
-        stringBuilder.Append("((");
-        stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
-        stringBuilder.Append("*");
-        stringBuilder.Append(p);
-        stringBuilder.Append(") + (");
-        stringBuilder.Append(FormatRecursively(node.GetSubtree(1)));
-        stringBuilder.Append("*(");
-        stringBuilder.Append("1 - " + p + ")");
-        stringBuilder.Append("))");
+        if (!variableConditionTreeNode.Symbol.IgnoreSlope) {
+          double threshold = variableConditionTreeNode.Threshold;
+          double slope = variableConditionTreeNode.Slope;
+          string p = "(1 / (1 + EXP(-" + slope.ToString(CultureInfo.InvariantCulture) + " * (" +
+                     GetColumnToVariableName(variableConditionTreeNode.VariableName) + "-" +
+                     threshold.ToString(CultureInfo.InvariantCulture) + "))))";
+          stringBuilder.Append("((");
+          stringBuilder.Append(FormatRecursively(node.GetSubtree(0)));
+          stringBuilder.Append("*");
+          stringBuilder.Append(p);
+          stringBuilder.Append(") + (");
+          stringBuilder.Append(FormatRecursively(node.GetSubtree(1)));
+          stringBuilder.Append("*(");
+          stringBuilder.Append("1 - " + p + ")");
+          stringBuilder.Append("))");
+        } else {
+          stringBuilder.AppendFormat(CultureInfo.InvariantCulture, "(IF({0} <= {1}, {2}, {3}))",
+            GetColumnToVariableName(variableConditionTreeNode.VariableName),
+            variableConditionTreeNode.Threshold,
+            FormatRecursively(node.GetSubtree(0)),
+            FormatRecursively(node.GetSubtree(1))
+            );
+        }
       } else if (symbol is Xor) {
         stringBuilder.Append("IF(");
