Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeTile.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeTile.cs	(revision 10796)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionTreeTile.cs	(revision 10797)
@@ -24,4 +24,5 @@
 using System.Drawing;
 using System.Drawing.Drawing2D;
+using System.Drawing.Text;
 using System.Linq;
 using HeuristicLab.Common;
@@ -38,7 +39,16 @@
     public int PreferredNodeWidth { get; set; }
     public int PreferredNodeHeight { get; set; }
+
+    private const int labelHeight = 30;
+
     public ReingoldTilfordLayoutEngine<ISymbolicExpressionTreeNode> LayoutEngine { get; set; }
     private readonly Dictionary<IPrimitive, ISymbolicExpressionTreeNode> primitivesToNodes;
     private readonly Dictionary<ISymbolicExpressionTreeNode, IPrimitive> nodesToPrimitives;
+
+    private string label;
+    public string Label {
+      get { return label; }
+      set { label = value; }
+    }
 
     private Size size;
@@ -142,9 +152,9 @@
 
         RectangularPrimitiveBase rectangularPrimitive;
-        var label = ShortenLabel(node);
+        var shortenedLabel = ShortenLabel(node);
         if (node.SubtreeCount == 0) {
-          rectangularPrimitive = new Rectangle(Chart, lowerLeft, upperRight) { Font = font, Text = label };
+          rectangularPrimitive = new Rectangle(Chart, lowerLeft, upperRight) { Font = font, Text = shortenedLabel };
         } else {
-          rectangularPrimitive = new Ellipse(Chart, lowerLeft, upperRight) { Font = font, Text = label };
+          rectangularPrimitive = new Ellipse(Chart, lowerLeft, upperRight) { Font = font, Text = shortenedLabel };
         }
 
@@ -174,9 +184,20 @@
         if (ymax < rpb.UpperRight.Y) ymax = (int)Math.Ceiling(rpb.UpperRight.Y);
       }
-      Size = new Size(xmax - xmin, ymax - ymin);
-      var width = Size.Width;
-      var height = Size.Height;
+      int width = xmax - xmin;
+      int height = ymax - ymin;
+
+      // draw a primitive to display the label
+      var labelRect = new Rectangle(this.Chart, new PointD(0, height), new PointD(width, height + labelHeight)) {
+        Pen = new Pen(Color.Black),
+        Brush = new SolidBrush(Color.Transparent),
+        Text = Label,
+        Font = new Font(FontFamily.GenericSansSerif, 12)
+      };
+      this.Add(labelRect);
+
       // draw a rectangle to mark the countour of this tile
-      var rectangle = new Rectangle(this.Chart, new PointD(0, 0), new PointD(width, height)) {
+      Size = new Size(width, height + labelHeight);
+
+      var rectangle = new Rectangle(this.Chart, new PointD(0, 0), new PointD(Size.Width, Size.Height)) {
         Pen = new Pen(Color.Gray),
         Brush = new SolidBrush(Color.Transparent)
@@ -188,10 +209,10 @@
         var rpb = primitive as RectangularPrimitiveBase;
         if (rpb != null) {
-          rpb.SetPosition(rpb.LowerLeft.X, height - rpb.UpperRight.Y, rpb.UpperRight.X, height - rpb.LowerLeft.Y);
+          rpb.SetPosition(rpb.LowerLeft.X, Size.Height - rpb.UpperRight.Y, rpb.UpperRight.X, Size.Height - rpb.LowerLeft.Y);
 
         } else {
           var line = primitive as LinearPrimitiveBase;
           if (line != null) {
-            line.SetPosition(line.Start.X, height - line.Start.Y, line.End.X, height - line.End.Y);
+            line.SetPosition(line.Start.X, Size.Height - line.Start.Y, line.End.X, Size.Height - line.End.Y);
           }
         }
@@ -201,4 +222,5 @@
     public override void Draw(Graphics graphics) {
       graphics.SmoothingMode = SmoothingMode.HighQuality;
+      graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
       base.Draw(graphics);
     }
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 10796)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/FragmentGraphView.cs	(revision 10797)
@@ -2,5 +2,4 @@
 using System.Drawing;
 using System.Linq;
-using HeuristicLab.Common;
 using HeuristicLab.Core.Views;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
@@ -51,4 +50,5 @@
         var tile = new SymbolicExpressionTreeTile(chart);
         tile.LayoutEngine = symbolicExpressionEngine;
+        tile.Label = "Generation " + node.Rank;
         tile.Root = node.Content.Root;
         var tileNode = new TileLayoutNode { Tile = tile };
@@ -94,25 +94,12 @@
         var aPos = aTile.Position;
 
-        if (node.Rank.IsAlmost(0)) {
-          foreach (var s in node.Content.Root.IterateNodesPrefix()) {
+        if (node.Content.Index1 > 0) {
+          var subtree = node.Content.Root.NodeAt(node.Content.Index1);
+          foreach (var s in subtree.IterateNodesPrefix()) {
             var primitive = aTile.GetPrimitive(s);
             if (primitive != null) {
               var rpb = primitive as RectangularPrimitiveBase;
               if (rpb != null) {
-                rpb.Pen = new Pen(Color.ForestGreen);
-              }
-            }
-          }
-        } else {
-
-          if (node.Content.Index1 > 0) {
-            var subtree = node.Content.Root.NodeAt(node.Content.Index1);
-            foreach (var s in subtree.IterateNodesPrefix()) {
-              var primitive = aTile.GetPrimitive(s);
-              if (primitive != null) {
-                var rpb = primitive as RectangularPrimitiveBase;
-                if (rpb != null) {
-                  rpb.Pen = new Pen(Color.RoyalBlue);
-                }
+                rpb.Pen = new Pen(Color.RoyalBlue);
               }
             }
Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/SymbolicDataAnalysisExpressionTracing.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/SymbolicDataAnalysisExpressionTracing.cs	(revision 10796)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/SymbolicDataAnalysisExpressionTracing.cs	(revision 10797)
@@ -86,7 +86,5 @@
             }
             var right = Trace(node.Parents.Last(), fragment.Index2, fragmentNode); // trace fragment
-            foreach (var v in left.Concat(right)) {
-              yield return v;
-            }
+            foreach (var v in left.Concat(right)) { yield return v; }
             break;
           } else {
