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 11502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4.csproj	(revision 11503)
@@ -283,5 +283,7 @@
       <DependentUpon>SymboldDataAnalysisGenealogyView.cs</DependentUpon>
     </Compile>
-    <Compile Include="Tracking\SymbolicDataAnalysisExpressionGenealogyGraphChart.cs" />
+    <Compile Include="Tracking\SymbolicDataAnalysisExpressionGenealogyGraphChart.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Include="Tracking\SymbolicDataAnalysisExpressionGenealogyGraphChart.Designer.cs">
       <DependentUpon>SymbolicDataAnalysisExpressionGenealogyGraphChart.cs</DependentUpon>
@@ -370,9 +372,4 @@
     </Content>
   </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Tracking\SymboldDataAnalysisGenealogyView.resx">
-      <DependentUpon>SymboldDataAnalysisGenealogyView.cs</DependentUpon>
-    </EmbeddedResource>
-  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
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 11502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymboldDataAnalysisGenealogyView.cs	(revision 11503)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using System.Collections.Generic;
 using System.Drawing;
@@ -61,4 +62,5 @@
     protected override void RegisterContentEvents() {
       genealogyGraphChart.GenealogyGraphNodeClicked += graphChart_GenealogyGraphNodeClicked;
+      genealogyGraphChart.GenealogyGraphNodeDoubleClicked += graphChart_GenealogyGraphNodeDoubleClicked;
       symbolicExpressionTreeChart.SymbolicExpressionTreeNodeClicked += treeChart_SymbolicExpressionNodeClicked;
       base.RegisterContentEvents();
@@ -78,9 +80,24 @@
 
       if (graphNode.InArcs.Any()) {
-        var fragment = (IFragment<ISymbolicExpressionTreeNode>)graphNode.InArcs.Last().Data;
+        var fragment = graphNode.InArcs.Last().Data as IFragment<ISymbolicExpressionTreeNode>;
         if (fragment != null) {
           treeChart_HighlightSubtree(graphNode.Data.NodeAt(fragment.Index1));
+        } else {
+          var td = graphNode.InArcs.Last().Data as Tuple<int, int, int, int>;
+          if (td != null) {
+            var s = graphNode.Data.NodeAt(td.Item1);
+            var f = graphNode.Data.NodeAt(td.Item2);
+            treeChart_HighlightSubtree(s, Color.Orange);
+            treeChart_HighlightSubtree(f, Color.RoyalBlue);
+          }
         }
       }
+    }
+
+    public void graphChart_GenealogyGraphNodeDoubleClicked(object sender, MouseEventArgs arcs) {
+      var visualNode = (VisualGenealogyGraphNode)sender;
+      var graphNode = (IGenealogyGraphNode<ISymbolicExpressionTree>)visualNode.Data;
+      var tree = graphNode.Data;
+      MainFormManager.MainForm.ShowContent(tree);
     }
 
@@ -109,5 +126,5 @@
         var matchingTrees = trees.Where(x => x.Root.ContainsSubtree(subtree, comparer));
 
-        var matchingVertices = matchingTrees.Select(x => Content.GetByContent(x)).Cast<IGenealogyGraphNode<ISymbolicExpressionTree>>();
+        var matchingVertices = matchingTrees.Select(x => Content.GetByContent(x));
         graphChart_highlightMatchingVertices(matchingVertices);
       }
@@ -133,13 +150,14 @@
     }
 
-    private void treeChart_HighlightSubtree(ISymbolicExpressionTreeNode subtree) {
+    private void treeChart_HighlightSubtree(ISymbolicExpressionTreeNode subtree, Color? color = null) {
+      Color myColor = color == null ? Color.RoyalBlue : (Color)color;
       foreach (var s in subtree.IterateNodesPrefix()) {
         var visualNode = symbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNode(s);
-        visualNode.LineColor = Color.RoyalBlue;
-        visualNode.FillColor = Color.LightBlue;
+        visualNode.LineColor = myColor;
+        //        visualNode.FillColor = myColor;
 
         foreach (var c in s.Subtrees) {
           var visualArc = symbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNodeConnection(s, c);
-          visualArc.LineColor = Color.RoyalBlue;
+          visualArc.LineColor = myColor;
         }
       }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymbolicDataAnalysisExpressionGenealogyGraphChart.Designer.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymbolicDataAnalysisExpressionGenealogyGraphChart.Designer.cs	(revision 11502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymbolicDataAnalysisExpressionGenealogyGraphChart.Designer.cs	(revision 11503)
@@ -1,3 +1,5 @@
-﻿namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
+﻿using System.Windows.Forms;
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
   partial class SymbolicDataAnalysisExpressionGenealogyGraphChart {
     /// <summary> 
@@ -24,6 +26,20 @@
     /// </summary>
     private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // pictureBox
+      // 
+      this.pictureBox.MouseDoubleClick += new MouseEventHandler(this.pictureBox_DoubleClick);
+      // 
+      // SymbolicDataAnalysisExpressionGenealogyGraphChart
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "SymbolicDataAnalysisExpressionGenealogyGraphChart";
+      this.Controls.SetChildIndex(this.pictureBox, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit();
+      this.ResumeLayout(false);
+
     }
 
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymbolicDataAnalysisExpressionGenealogyGraphChart.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymbolicDataAnalysisExpressionGenealogyGraphChart.cs	(revision 11502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymbolicDataAnalysisExpressionGenealogyGraphChart.cs	(revision 11503)
@@ -20,4 +20,6 @@
 #endregion
 
+using System.Linq;
+using System.Windows.Forms;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.EvolutionTracking;
@@ -34,4 +36,15 @@
       set { base.GenealogyGraph = value; }
     }
+
+    private void pictureBox_DoubleClick(object sender, MouseEventArgs e) {
+      var visualNodes = Chart.GetAllPrimitives(e.Location).Where(p => p is VisualGenealogyGraphNode).ToList();
+      if (!visualNodes.Any()) {
+        SelectedVisualNode = null;
+        return;
+      }
+      var visualNode = visualNodes.First();
+
+      base.OnGenealogyGraphNodeDoubleClicked(visualNode, e);
+    }
     // add event handlers here for processing events coming from the tree chart
   }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/TraceCalculator.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/TraceCalculator.cs	(revision 11502)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/TraceCalculator.cs	(revision 11503)
@@ -187,11 +187,6 @@
     private void ConnectLast(IGenealogyGraphNode<ISymbolicExpressionTree> g, int si, IGenealogyGraphNode<ISymbolicExpressionTree> last) {
       IFragment<ISymbolicExpressionTreeNode> fragment = g.Parents.Any() ? (IFragment<ISymbolicExpressionTreeNode>)g.InArcs.Last().Data : null;
-      var n = traceGraph.GetByContent(g.Data);
-      if (n == null) {
-        n = g.Copy();
-        traceGraph.AddVertex(n);
-      }
       int fi = fragment == null ? 0 : fragment.Index1; // fragment index
-      traceMap[n] = new Tuple<int, int>(si, fi);
+      var n = GetTraceNode(g, si, fi); // will append n to the trace graph if it does not exist
       if (last == null)
         return;
@@ -201,8 +196,8 @@
       var td = new Tuple<int, int, int, int>(si, fi, lastSi, lastFi); // trace data
       var arc = n.InArcs.SingleOrDefault(a => a.Source == last && a.Data.Equals(td));
-      if (arc != null)
-        return;
-      arc = new GenealogyGraphArc(last, n) { Data = td };
-      traceGraph.AddArc(arc);
+      if (arc == null) {
+        arc = new GenealogyGraphArc(last, n) { Data = td };
+        traceGraph.AddArc(arc);
+      }
     }
   }
