Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/FragmentGraphView.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/FragmentGraphView.cs	(revision 10884)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/FragmentGraphView.cs	(revision 10888)
@@ -33,5 +33,5 @@
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
   [View("FragmentGraphView")]
-  [Content(typeof(IGenealogyGraph<IFragment<ISymbolicExpressionTreeNode>>), IsDefaultView = true)]
+  [Content(typeof(FragmentGraph), IsDefaultView = true)]
   public sealed partial class FragmentGraphView : ItemView {
     private const int PreferredHorizontalSpacing = 10;
@@ -41,10 +41,10 @@
     private ReingoldTilfordLayoutEngine<ISymbolicExpressionTreeNode> symbolicExpressionEngine;
 
-    private Dictionary<IGenealogyGraphNode<IFragment<ISymbolicExpressionTreeNode>>, TileLayoutNode> tileDictionary;
+    private Dictionary<FragmentNode, TileLayoutNode> tileDictionary;
 
     private SymbolicExpressionTreeTile Root { get; set; }
 
-    public new IGenealogyGraph<IFragment<ISymbolicExpressionTreeNode>> Content {
-      get { return (IGenealogyGraph<IFragment<ISymbolicExpressionTreeNode>>)base.Content; }
+    public new FragmentGraph Content {
+      get { return (FragmentGraph)base.Content; }
       set { base.Content = value; }
     }
@@ -63,5 +63,5 @@
         NodeHeight = 40
       };
-      tileDictionary = new Dictionary<IGenealogyGraphNode<IFragment<ISymbolicExpressionTreeNode>>, TileLayoutNode>();
+      tileDictionary = new Dictionary<FragmentNode, TileLayoutNode>();
     }
 
@@ -70,15 +70,16 @@
       tileDictionary.Clear();
       foreach (var node in Content.Nodes) {
+        var graphNode = (IGenealogyGraphNode<ISymbolicExpressionTree>)node.Content;
         var tile = new SymbolicExpressionTreeTile(chart);
         tile.LayoutEngine = symbolicExpressionEngine;
-        tile.Label = "Generation " + node.Rank + Environment.NewLine +
-                     "Quality " + String.Format("{0:0.000}", node.Quality);
-        tile.Root = node.Content.Root;
+        tile.Label = "Generation " + node.Content.Rank + Environment.NewLine +
+                     "Quality " + String.Format("{0:0.000}", node.Content.Quality);
+        tile.Root = graphNode.Content.Root;
         var tileNode = new TileLayoutNode { Tile = tile };
         tileDictionary.Add(node, tileNode);
       }
-      foreach (var node in Content.Nodes.Where(n => n.Children.Any())) {
+      foreach (var node in Content.Nodes.Where(n => n.OutArcs.Any())) {
         var layoutNode = tileDictionary[node];
-        layoutNode.Children = new List<TileLayoutNode>(node.Children.Select(x => tileDictionary[x]));
+        layoutNode.Children = new List<TileLayoutNode>(node.OutArcs.Select(a => tileDictionary[(FragmentNode)a.Target]));
       }
     }
@@ -116,8 +117,8 @@
         var aSize = aTile.Size;
         var aPos = aTile.Position;
-
-        var fragment = node.Content;
-        if (fragment.Index1 > 0) {
-          var subtree = fragment.Root.NodeAt(fragment.Index1);
+        var graphNode = node.Content;
+
+        if (node.SubtreeIndex > 0) {
+          var subtree = graphNode.Content.Root.NodeAt(node.SubtreeIndex);
           foreach (var s in subtree.IterateNodesPrefix()) {
             var primitive = aTile.GetPrimitive(s);
@@ -130,6 +131,6 @@
           }
         }
-        if (fragment.Index2 > 0) {
-          var subtree = fragment.Root.NodeAt(fragment.Index2);
+        if (node.FragmentIndex > 0) {
+          var subtree = graphNode.Content.Root.NodeAt(node.FragmentIndex);
           foreach (var s in subtree.IterateNodesPrefix()) {
             var primitive = aTile.GetPrimitive(s);
@@ -143,16 +144,18 @@
         }
 
-        if (node.Parents.Any() && node == node.Parents.First().Children.First()) {
-          var parent = node.Parents.First();
-          var index = fragment.Index1 + (parent.Content.Index2 - parent.Content.Index1);
-          // some mutations create discontinuities which invalidate the index
-          if (index >= 0 && index < fragment.Root.GetLength()) {
-            var subtree = fragment.Root.NodeAt(index);
-            var primitive = aTile.GetPrimitive(subtree);
-            primitive.Brush = new SolidBrush(Color.LightCoral);
+        if (node.InArcs.Any()) {
+          var parent = (FragmentNode)node.InArcs.First().Source;
+          if (parent.OutArcs.First().Target == node) {
+            var index = node.SubtreeIndex + (parent.FragmentIndex - parent.SubtreeIndex);
+            // some mutations create discontinuities which invalidate the index
+            if (index >= 0 && index < graphNode.Content.Length) {
+              var subtree = graphNode.Content.NodeAt(index);
+              var primitive = aTile.GetPrimitive(subtree);
+              primitive.Brush = new SolidBrush(Color.LightCoral);
+            }
           }
         }
 
-        foreach (var child in node.Children) {
+        foreach (var child in node.OutArcs.Select(x => (FragmentNode)x.Target)) {
           var bTile = tileDictionary[child].Tile;
           var bSize = bTile.Size;
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymboldDataAnalysisGenealogyView.Designer.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymboldDataAnalysisGenealogyView.Designer.cs	(revision 10884)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymboldDataAnalysisGenealogyView.Designer.cs	(revision 10888)
@@ -51,17 +51,19 @@
       this.genealogyGraphChart = new HeuristicLab.Problems.DataAnalysis.Symbolic.Views.SymbolicDataAnalysisExpressionGenealogyGraphChart();
       this.symbolicExpressionTreeChart = new HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views.SymbolicExpressionTreeChart();
+      this.groupBox1 = new System.Windows.Forms.GroupBox();
+      this.simpleLineages_checkBox = new System.Windows.Forms.CheckBox();
+      this.lockGraph_checkBox = new System.Windows.Forms.CheckBox();
       this.trace_checkBox = new System.Windows.Forms.CheckBox();
-      this.lockGraph_checkBox = new System.Windows.Forms.CheckBox();
-      this.simpleLineages_checkBox = new System.Windows.Forms.CheckBox();
+      this.hotPaths_button = new System.Windows.Forms.Button();
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
       this.splitContainer1.Panel1.SuspendLayout();
       this.splitContainer1.Panel2.SuspendLayout();
       this.splitContainer1.SuspendLayout();
+      this.groupBox1.SuspendLayout();
       this.SuspendLayout();
       // 
       // splitContainer1
       // 
-      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Bottom;
-      this.splitContainer1.Location = new System.Drawing.Point(0, 33);
+      this.splitContainer1.Location = new System.Drawing.Point(0, 57);
       this.splitContainer1.Name = "splitContainer1";
       // 
@@ -73,5 +75,5 @@
       // 
       this.splitContainer1.Panel2.Controls.Add(this.symbolicExpressionTreeChart);
-      this.splitContainer1.Size = new System.Drawing.Size(1247, 722);
+      this.splitContainer1.Size = new System.Drawing.Size(1247, 698);
       this.splitContainer1.SplitterDistance = 607;
       this.splitContainer1.TabIndex = 0;
@@ -87,5 +89,5 @@
       this.genealogyGraphChart.ScaleOnResize = true;
       this.genealogyGraphChart.SimpleLineages = false;
-      this.genealogyGraphChart.Size = new System.Drawing.Size(607, 722);
+      this.genealogyGraphChart.Size = new System.Drawing.Size(607, 698);
       this.genealogyGraphChart.TabIndex = 0;
       this.genealogyGraphChart.TraceFragments = false;
@@ -98,43 +100,66 @@
       this.symbolicExpressionTreeChart.Location = new System.Drawing.Point(0, 0);
       this.symbolicExpressionTreeChart.Name = "symbolicExpressionTreeChart";
-      this.symbolicExpressionTreeChart.Size = new System.Drawing.Size(636, 722);
+      this.symbolicExpressionTreeChart.Size = new System.Drawing.Size(636, 698);
       this.symbolicExpressionTreeChart.Spacing = 5;
       this.symbolicExpressionTreeChart.SuspendRepaint = false;
       this.symbolicExpressionTreeChart.TabIndex = 0;
-      this.symbolicExpressionTreeChart.TextFont = new System.Drawing.Font(FontFamily.GenericSansSerif, 10);
+      this.symbolicExpressionTreeChart.TextFont = new System.Drawing.Font("Microsoft Sans Serif", 10F);
       this.symbolicExpressionTreeChart.Tree = null;
+      // 
+      // groupBox1
+      // 
+      this.groupBox1.Controls.Add(this.hotPaths_button);
+      this.groupBox1.Controls.Add(this.simpleLineages_checkBox);
+      this.groupBox1.Controls.Add(this.lockGraph_checkBox);
+      this.groupBox1.Controls.Add(this.trace_checkBox);
+      this.groupBox1.Location = new System.Drawing.Point(3, 3);
+      this.groupBox1.Name = "groupBox1";
+      this.groupBox1.Size = new System.Drawing.Size(1195, 48);
+      this.groupBox1.TabIndex = 4;
+      this.groupBox1.TabStop = false;
+      this.groupBox1.Text = "Controls";
+      // 
+      // simpleLineages_checkBox
+      // 
+      this.simpleLineages_checkBox.AutoSize = true;
+      this.simpleLineages_checkBox.Location = new System.Drawing.Point(94, 19);
+      this.simpleLineages_checkBox.Name = "simpleLineages_checkBox";
+      this.simpleLineages_checkBox.Size = new System.Drawing.Size(103, 17);
+      this.simpleLineages_checkBox.TabIndex = 6;
+      this.simpleLineages_checkBox.Text = "Simple Lineages";
+      this.simpleLineages_checkBox.UseVisualStyleBackColor = true;
+      this.simpleLineages_checkBox.CheckedChanged += new System.EventHandler(this.simpleLineages_checkBox_CheckedChanged);
+      // 
+      // lockGraph_checkBox
+      // 
+      this.lockGraph_checkBox.AutoSize = true;
+      this.lockGraph_checkBox.Location = new System.Drawing.Point(6, 19);
+      this.lockGraph_checkBox.Name = "lockGraph_checkBox";
+      this.lockGraph_checkBox.Size = new System.Drawing.Size(82, 17);
+      this.lockGraph_checkBox.TabIndex = 5;
+      this.lockGraph_checkBox.Text = "Lock Graph";
+      this.lockGraph_checkBox.UseVisualStyleBackColor = true;
+      this.lockGraph_checkBox.CheckedChanged += new System.EventHandler(this.lockGraph_checkBox_CheckedChanged);
       // 
       // trace_checkBox
       // 
       this.trace_checkBox.AutoSize = true;
-      this.trace_checkBox.Location = new System.Drawing.Point(611, 10);
+      this.trace_checkBox.Location = new System.Drawing.Point(203, 19);
       this.trace_checkBox.Name = "trace_checkBox";
       this.trace_checkBox.Size = new System.Drawing.Size(54, 17);
-      this.trace_checkBox.TabIndex = 1;
+      this.trace_checkBox.TabIndex = 4;
       this.trace_checkBox.Text = "Trace";
       this.trace_checkBox.UseVisualStyleBackColor = true;
       this.trace_checkBox.CheckedChanged += new System.EventHandler(this.trace_checkBox_CheckedChanged);
       // 
-      // lockGraph_checkBox
+      // hotPaths_button
       // 
-      this.lockGraph_checkBox.AutoSize = true;
-      this.lockGraph_checkBox.Location = new System.Drawing.Point(4, 10);
-      this.lockGraph_checkBox.Name = "lockGraph_checkBox";
-      this.lockGraph_checkBox.Size = new System.Drawing.Size(82, 17);
-      this.lockGraph_checkBox.TabIndex = 2;
-      this.lockGraph_checkBox.Text = "Lock Graph";
-      this.lockGraph_checkBox.UseVisualStyleBackColor = true;
-      this.lockGraph_checkBox.CheckedChanged += new System.EventHandler(this.lockGraph_checkBox_CheckedChanged);
-      // 
-      // simpleLineages_checkBox
-      // 
-      this.simpleLineages_checkBox.AutoSize = true;
-      this.simpleLineages_checkBox.Location = new System.Drawing.Point(91, 10);
-      this.simpleLineages_checkBox.Name = "simpleLineages_checkBox";
-      this.simpleLineages_checkBox.Size = new System.Drawing.Size(103, 17);
-      this.simpleLineages_checkBox.TabIndex = 3;
-      this.simpleLineages_checkBox.Text = "Simple Lineages";
-      this.simpleLineages_checkBox.UseVisualStyleBackColor = true;
-      this.simpleLineages_checkBox.CheckedChanged += new System.EventHandler(this.simpleLineages_checkBox_CheckedChanged);
+      this.hotPaths_button.Location = new System.Drawing.Point(263, 15);
+      this.hotPaths_button.Name = "hotPaths_button";
+      this.hotPaths_button.Size = new System.Drawing.Size(75, 23);
+      this.hotPaths_button.TabIndex = 7;
+      this.hotPaths_button.Text = "Hot paths";
+      this.hotPaths_button.UseVisualStyleBackColor = true;
+      this.hotPaths_button.Click += new System.EventHandler(this.hotPaths_button_Click);
       // 
       // SymboldDataAnalysisGenealogyView
@@ -142,7 +167,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.simpleLineages_checkBox);
-      this.Controls.Add(this.lockGraph_checkBox);
-      this.Controls.Add(this.trace_checkBox);
+      this.Controls.Add(this.groupBox1);
       this.Controls.Add(this.splitContainer1);
       this.Name = "SymboldDataAnalysisGenealogyView";
@@ -152,6 +175,7 @@
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
       this.splitContainer1.ResumeLayout(false);
+      this.groupBox1.ResumeLayout(false);
+      this.groupBox1.PerformLayout();
       this.ResumeLayout(false);
-      this.PerformLayout();
 
     }
@@ -162,7 +186,9 @@
     private SymbolicDataAnalysisExpressionGenealogyGraphChart genealogyGraphChart;
     private Encodings.SymbolicExpressionTreeEncoding.Views.SymbolicExpressionTreeChart symbolicExpressionTreeChart;
+    private System.Windows.Forms.GroupBox groupBox1;
+    private System.Windows.Forms.CheckBox simpleLineages_checkBox;
+    private System.Windows.Forms.CheckBox lockGraph_checkBox;
     private System.Windows.Forms.CheckBox trace_checkBox;
-    private System.Windows.Forms.CheckBox lockGraph_checkBox;
-    private System.Windows.Forms.CheckBox simpleLineages_checkBox;
+    private System.Windows.Forms.Button hotPaths_button;
 
   }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymboldDataAnalysisGenealogyView.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymboldDataAnalysisGenealogyView.cs	(revision 10884)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymboldDataAnalysisGenealogyView.cs	(revision 10888)
@@ -30,5 +30,4 @@
 using HeuristicLab.EvolutionTracking.Views;
 using HeuristicLab.MainForm;
-
 
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
@@ -161,4 +160,8 @@
     }
     #endregion
+
+    private void hotPaths_button_Click(object sender, System.EventArgs e) {
+      genealogyGraphChart.HighlightHotPaths();
+    }
   }
 }
