Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.csproj
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.csproj	(revision 10502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.csproj	(revision 10514)
@@ -149,4 +149,8 @@
       <Private>False</Private>
     </Reference>
+    <Reference Include="HeuristicLab.Visualization-3.3, Version=3.3.0.9491, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Visualization-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="HeuristicLab.Visualization.ChartControlsExtensions-3.3">
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Visualization.ChartControlsExtensions-3.3.dll</HintPath>
@@ -195,4 +199,5 @@
       <DependentUpon>SymbolicExpressionGrammarView.cs</DependentUpon>
     </Compile>
+    <Compile Include="SymbolicExpressionTreeTile.cs" />
     <Compile Include="SymbolView.cs">
       <SubType>UserControl</SubType>
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeTile.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeTile.cs	(revision 10514)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeTile.cs	(revision 10514)
@@ -0,0 +1,92 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 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.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using HeuristicLab.Visualization;
+using HeuristicLab.Visualization.Primitives;
+using Rectangle = HeuristicLab.Visualization.Rectangle;
+
+namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views {
+  public class SymbolicExpressionTreeTile : Group {
+    public double PreferredNodeWidth { get; set; }
+    public double PreferredNodeHeight { get; set; }
+    private ISymbolicExpressionTree symbolicExpressionTree;
+    public ISymbolicExpressionTree SymbolicExpressionTree {
+      get { return symbolicExpressionTree; }
+      set {
+        symbolicExpressionTree = value;
+        GeneratePrimitives(PreferredNodeWidth, PreferredNodeHeight);
+      }
+    }
+
+    public ReingoldTilfordLayoutEngine<ISymbolicExpressionTreeNode> LayoutEngine { get; set; }
+    public SymbolicExpressionTreeLayoutAdapter LayoutAdapter { get; set; }
+    public SymbolicExpressionTreeTile(IChart chart) : base(chart) { }
+    public SymbolicExpressionTreeTile(IChart chart, ISymbolicExpressionTree tree)
+      : base(chart) {
+      SymbolicExpressionTree = tree;
+      PreferredNodeWidth = 80;
+      PreferredNodeHeight = 40;
+    }
+    private void GeneratePrimitives(double preferredNodeWidth, double preferredNodeHeight) {
+      Clear();
+      var layoutNodes = LayoutAdapter.Convert(SymbolicExpressionTree).ToList();
+      layoutNodes.RemoveAt(0);
+      LayoutEngine.Root = layoutNodes[0];
+      LayoutEngine.CalculateLayout();
+
+      var primitivesMap = new Dictionary<LayoutNode<ISymbolicExpressionTreeNode>, LabeledPrimitive>(); // both Ellipse and Rectangle are derived from the RectangularPrimitiveBase
+      var font = new Font(FontFamily.GenericSansSerif, 10, GraphicsUnit.Pixel);
+
+      foreach (var node in layoutNodes) {
+        LabeledPrimitive labeledPrimitive;
+        if (node.Children == null || node.Children.Count == 0) {
+          var rectangle = new Rectangle(Chart, node.X, node.Y, node.X + preferredNodeWidth, node.Y + preferredNodeHeight);
+          var textPrimitive = new TextPrimitive(Chart, rectangle.LowerLeft, rectangle.UpperRight) {
+            Font = font,
+            Text = node.Content.ToString()
+          };
+          labeledPrimitive = new LabeledPrimitive(Chart, rectangle, textPrimitive);
+        } else {
+          var ellipse = new Ellipse(Chart, node.X, node.Y, node.X + preferredNodeWidth, node.Y + preferredNodeHeight);
+          var textPrimitive = new TextPrimitive(Chart, ellipse.LowerLeft, ellipse.UpperRight) {
+            Font = font,
+            Text = node.Content.ToString()
+          };
+          labeledPrimitive = new LabeledPrimitive(Chart, ellipse, textPrimitive);
+        }
+        this.Add(labeledPrimitive);
+        primitivesMap.Add(node, labeledPrimitive);
+      }
+
+      foreach (var node in layoutNodes.Where(n => n.Children != null)) {
+        foreach (var child in node.Children) {
+          var start = new PointD(node.X + preferredNodeWidth / 2, node.Y + preferredNodeHeight);
+          var end = new PointD(child.X + preferredNodeWidth / 2, child.Y);
+          var line = new Line(this.Chart, start, end);
+          this.Add(line);
+        }
+      }
+    }
+  }
+}
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj	(revision 10502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj	(revision 10514)
@@ -186,4 +186,5 @@
     <Compile Include="Creators\RampedHalfAndHalfTreeCreator.cs" />
     <Compile Include="Formatters\SymbolicExpressionTreeGraphvizFormatter.cs" />
+    <Compile Include="Formatters\SymbolicExpressionTreeHierarchicalFormatter.cs" />
     <Compile Include="Formatters\SymbolicExpressionTreeLatexFormatter.cs" />
     <Compile Include="Interfaces\ILayoutAdapter.cs" />
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/FrequentFragmentsDialog.Designer.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/FrequentFragmentsDialog.Designer.cs	(revision 10502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/FrequentFragmentsDialog.Designer.cs	(revision 10514)
@@ -1,3 +1,3 @@
-﻿namespace HeuristicLab.EvolutionaryTracking.Views {
+﻿namespace HeuristicLab.EvolutionTracking.Views {
   partial class FrequentFragmentsDialog {
     /// <summary>
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/FrequentFragmentsDialog.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/FrequentFragmentsDialog.cs	(revision 10502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/FrequentFragmentsDialog.cs	(revision 10514)
@@ -1,5 +1,5 @@
 ﻿using System.Windows.Forms;
 
-namespace HeuristicLab.EvolutionaryTracking.Views {
+namespace HeuristicLab.EvolutionTracking.Views {
   public partial class FrequentFragmentsDialog : Form {
     public FrequentFragmentsDialog() {
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphView.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphView.cs	(revision 10502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphView.cs	(revision 10514)
@@ -6,5 +6,5 @@
 namespace HeuristicLab.EvolutionTracking.Views {
   [View("GenealogyGraphView")]
-  [Content(typeof(GenealogyGraph), IsDefaultView = false)]
+  [Content(typeof(IGenealogyGraph), IsDefaultView = false)]
   public partial class GenealogyGraphView : ItemView {
     public new IGenealogyGraph Content {
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/HeuristicLab.EvolutionTracking.Views-3.4.csproj
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/HeuristicLab.EvolutionTracking.Views-3.4.csproj	(revision 10502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/HeuristicLab.EvolutionTracking.Views-3.4.csproj	(revision 10514)
@@ -97,5 +97,7 @@
       <DependentUpon>FrequentFragmentsDialog.cs</DependentUpon>
     </Compile>
-    <Compile Include="GenealogyGraphChart.cs" />
+    <Compile Include="GenealogyGraphChart.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Include="GenealogyGraphChart.Designer.cs">
       <DependentUpon>GenealogyGraphChart.cs</DependentUpon>
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/HeuristicLab.EvolutionTracking-3.4.csproj.user
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/HeuristicLab.EvolutionTracking-3.4.csproj.user	(revision 10502)
+++ 	(revision )
@@ -1,6 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <ProjectView>ProjectFiles</ProjectView>
-  </PropertyGroup>
-</Project>
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4.csproj
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4.csproj	(revision 10502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4.csproj	(revision 10514)
@@ -219,4 +219,16 @@
       <DependentUpon>SlidingWindowDataView.cs</DependentUpon>
     </Compile>
+    <Compile Include="SymbolicDataAnalysisExpressionLineageExplorerChart.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="SymbolicDataAnalysisExpressionLineageExplorerChart.Designer.cs">
+      <DependentUpon>SymbolicDataAnalysisExpressionLineageExplorerChart.cs</DependentUpon>
+    </Compile>
+    <Compile Include="SymbolicDataAnalysisExpressionLineageExplorerView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="SymbolicDataAnalysisExpressionLineageExplorerView.Designer.cs">
+      <DependentUpon>SymbolicDataAnalysisExpressionLineageExplorerView.cs</DependentUpon>
+    </Compile>
     <Compile Include="TextualSymbolicDataAnalysisModelView.cs">
       <SubType>UserControl</SubType>
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerChart.Designer.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerChart.Designer.cs	(revision 10514)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerChart.Designer.cs	(revision 10514)
@@ -0,0 +1,32 @@
+﻿namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
+  partial class SymbolicDataAnalysisExpressionLineageExplorerChart {
+    /// <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.Font;
+    }
+
+    #endregion
+  }
+}
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerChart.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerChart.cs	(revision 10514)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerChart.cs	(revision 10514)
@@ -0,0 +1,30 @@
+﻿using System.Collections.Generic;
+using System.Drawing;
+using HeuristicLab.Visualization;
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
+  public partial class SymbolicDataAnalysisExpressionLineageExplorerChart : ChartControl {
+    public SymbolicDataAnalysisExpressionLineageExplorerChart() {
+      InitializeComponent();
+      if (Chart == null) {
+        Chart = new Chart(0, 0, PreferredSize.Width, PreferredSize.Height);
+      }
+    }
+
+    public void Clear() {
+      Chart.Group.Clear();
+    }
+
+    public void Add(IPrimitive primitive) {
+      Chart.Group.Add(primitive);
+    }
+
+    public void AddRange(IEnumerable<IPrimitive> primitives) {
+      Chart.Group.AddRange(primitives);
+    }
+
+    public void Draw(Graphics graphics) {
+      Chart.Group.Draw(graphics);
+    }
+  }
+}
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerView.Designer.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerView.Designer.cs	(revision 10514)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerView.Designer.cs	(revision 10514)
@@ -0,0 +1,74 @@
+﻿namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
+  partial class SymbolicDataAnalysisExpressionLineageExplorerView {
+    /// <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.treeView = new System.Windows.Forms.TreeView();
+      this.symbolicDataAnalysisExpressionLineageExplorerChart = new HeuristicLab.Problems.DataAnalysis.Symbolic.Views.SymbolicDataAnalysisExpressionLineageExplorerChart();
+      this.SuspendLayout();
+      // 
+      // treeView
+      // 
+      this.treeView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left)));
+      this.treeView.Location = new System.Drawing.Point(3, 3);
+      this.treeView.Name = "treeView";
+      this.treeView.Size = new System.Drawing.Size(167, 590);
+      this.treeView.TabIndex = 0;
+      this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect);
+      // 
+      // symbolicDataAnalysisExpressionLineageExplorerChart
+      // 
+      this.symbolicDataAnalysisExpressionLineageExplorerChart.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.symbolicDataAnalysisExpressionLineageExplorerChart.AutoSize = true;
+      this.symbolicDataAnalysisExpressionLineageExplorerChart.BackColor = System.Drawing.SystemColors.Control;
+      this.symbolicDataAnalysisExpressionLineageExplorerChart.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+      this.symbolicDataAnalysisExpressionLineageExplorerChart.Chart = null;
+      this.symbolicDataAnalysisExpressionLineageExplorerChart.Location = new System.Drawing.Point(176, 3);
+      this.symbolicDataAnalysisExpressionLineageExplorerChart.Name = "symbolicDataAnalysisExpressionLineageExplorerChart";
+      this.symbolicDataAnalysisExpressionLineageExplorerChart.ScaleOnResize = true;
+      this.symbolicDataAnalysisExpressionLineageExplorerChart.Size = new System.Drawing.Size(657, 593);
+      this.symbolicDataAnalysisExpressionLineageExplorerChart.TabIndex = 1;
+      // 
+      // SymbolicDataAnalysisExpressionLineageExplorerView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.symbolicDataAnalysisExpressionLineageExplorerChart);
+      this.Controls.Add(this.treeView);
+      this.DoubleBuffered = true;
+      this.Name = "SymbolicDataAnalysisExpressionLineageExplorerView";
+      this.Size = new System.Drawing.Size(836, 596);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TreeView treeView;
+    private SymbolicDataAnalysisExpressionLineageExplorerChart symbolicDataAnalysisExpressionLineageExplorerChart;
+  }
+}
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerView.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerView.cs	(revision 10514)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisExpressionLineageExplorerView.cs	(revision 10514)
@@ -0,0 +1,93 @@
+﻿using System.Collections.Generic;
+using System.Drawing.Text;
+using System.Globalization;
+using System.Linq;
+using System.Windows.Forms;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views;
+using HeuristicLab.EvolutionTracking;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.Visualization;
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
+  [View("LineageExplorerView")]
+  [Content(typeof(IGenealogyGraph), false)]
+  public partial class SymbolicDataAnalysisExpressionLineageExplorerView : AsynchronousContentView {
+    private readonly ReingoldTilfordLayoutEngine<ISymbolicExpressionTreeNode> SymbolicExpressionTreeNodeLayoutEngine;
+    private readonly SymbolicExpressionTreeLayoutAdapter SymbolicExpressionTreeLayoutAdapter;
+
+    private readonly Dictionary<TreeNode, ISymbolicExpressionTree> TreeMap;
+
+    private const int MinHorizontalSpacing = 50;
+    private const int MinVerticalSpacing = 50;
+    private const int PreferredNodeWidth = 80;
+    private const int PreferredNodeHeight = 40;
+
+    public new IGenealogyGraph Content {
+      get { return (IGenealogyGraph)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public SymbolicDataAnalysisExpressionLineageExplorerView() {
+      InitializeComponent();
+      SymbolicExpressionTreeNodeLayoutEngine = new ReingoldTilfordLayoutEngine<ISymbolicExpressionTreeNode> {
+        MinHorizontalSpacing = MinHorizontalSpacing + PreferredNodeWidth,
+        MinVerticalSpacing = MinVerticalSpacing + PreferredNodeHeight
+      };
+      SymbolicExpressionTreeLayoutAdapter = new SymbolicExpressionTreeLayoutAdapter();
+      TreeMap = new Dictionary<TreeNode, ISymbolicExpressionTree>();
+      double width = symbolicDataAnalysisExpressionLineageExplorerChart.PreferredSize.Width;
+      double height = symbolicDataAnalysisExpressionLineageExplorerChart.PreferredSize.Height;
+      if (symbolicDataAnalysisExpressionLineageExplorerChart.Chart == null) {
+        symbolicDataAnalysisExpressionLineageExplorerChart.Chart = new Chart(0, 0, width, height);
+      }
+    }
+
+
+    #region events
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content != null) { updateTreeView(); }
+    }
+    #endregion
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      treeView.Enabled = Content != null;
+    }
+
+    private void updateTreeView() {
+      var lastGen = Content.Ranks.OrderBy(x => x.Key).Last().Value.ToList();
+      TreeMap.Clear();
+      symbolicDataAnalysisExpressionLineageExplorerChart.Clear();
+      foreach (var g in lastGen) {
+        var treeNode = new TreeNode(g.Quality.ToString(CultureInfo.InvariantCulture));
+        treeView.Nodes.Add(treeNode);
+        TreeMap.Add(treeNode, (ISymbolicExpressionTree)g.Content);
+      }
+    }
+
+    private void treeView_AfterSelect(object sender, TreeViewEventArgs e) {
+      symbolicDataAnalysisExpressionLineageExplorerChart.Clear();
+      var selectedNode = treeView.SelectedNode;
+      var symbolicExpressionTree = TreeMap[selectedNode];
+      var tile = new SymbolicExpressionTreeTile(this.symbolicDataAnalysisExpressionLineageExplorerChart.Chart) {
+        LayoutAdapter = SymbolicExpressionTreeLayoutAdapter,
+        LayoutEngine = SymbolicExpressionTreeNodeLayoutEngine,
+        PreferredNodeWidth = PreferredNodeWidth,
+        PreferredNodeHeight = PreferredNodeHeight
+      };
+      tile.SymbolicExpressionTree = symbolicExpressionTree;
+      symbolicDataAnalysisExpressionLineageExplorerChart.Add(tile);
+
+      //      graphics.TranslateTransform(0, symbolicDataAnalysisExpressionLineageExplorerChart.Height);
+      //      graphics.ScaleTransform(1f, -1f); // flip vertically (because the visualization plugin is upside-down
+      //      graphics.RotateTransform(180F);
+      var graphics = symbolicDataAnalysisExpressionLineageExplorerChart.CreateGraphics();
+      graphics.ScaleTransform(1f, -1f); // flip vertically (because the visualization plugin is upside-down
+      graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
+      symbolicDataAnalysisExpressionLineageExplorerChart.Draw(graphics);
+    }
+  }
+}
