Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphChart.Designer.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphChart.Designer.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphChart.Designer.cs	(revision 10285)
@@ -1,4 +1,9 @@
-﻿namespace HeuristicLab.EvolutionTracking.Views {
-  partial class GenealogyGraphChart {
+﻿using HeuristicLab.Core;
+
+namespace HeuristicLab.EvolutionTracking.Views {
+  partial class GenealogyGraphChart<TGraph, TVertex, TContent>
+    where TGraph : class, IGenealogyGraph<TVertex, TContent>
+    where TVertex : class, IGenealogyGraphNode<TContent>, new()
+    where TContent : class, IItem {
     /// <summary> 
     /// Required designer variable.
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphChart.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphChart.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphChart.cs	(revision 10285)
@@ -6,9 +6,13 @@
 using System.Windows.Forms;
 using HeuristicLab.Common;
+using HeuristicLab.Core;
 using HeuristicLab.Visualization;
 
 namespace HeuristicLab.EvolutionTracking.Views {
-  public partial class GenealogyGraphChart : ChartControl {
-    private GenealogyGraph genealogyGraph;
+  public partial class GenealogyGraphChart<TGraph, TVertex, TContent> : ChartControl
+    where TGraph : class, IGenealogyGraph<TVertex, TContent>
+    where TVertex : class, IGenealogyGraphNode<TContent>, new()
+    where TContent : class,IItem {
+    private TGraph genealogyGraph;
 
     private const double XIncrement = 30;
@@ -16,5 +20,5 @@
     private const double Diameter = 20;
 
-    public GenealogyGraph GenealogyGraph {
+    public TGraph GenealogyGraph {
       get { return genealogyGraph; }
       set {
@@ -62,5 +66,4 @@
       return arc;
     }
-
     private bool DrawInProgress { get; set; } // do not try to update the chart while the drawing is not finished
     private VisualGenealogyGraphNode SelectedVisualNode { get; set; }
@@ -71,9 +74,7 @@
       if (clicked != null) clicked(sender, e);
     }
-
     public GenealogyGraphChart() {
       InitializeComponent();
     }
-
     protected virtual void DrawGraph(double xIncrement, double yIncrement, double diameter) {
       Chart.UpdateEnabled = false;
@@ -104,5 +105,7 @@
         }
         y -= yIncrement;
-      }
+        x = 0;
+      }
+
       // add arcs
       foreach (var node in GenealogyGraph.Nodes) {
@@ -116,5 +119,6 @@
           var pen = new Pen(Color.Transparent);
           var visualArc = AddArc(Chart, visualParent, visualNode, pen);
-          arcMap.Add(Tuple.Create(visualParent, visualNode), visualArc);
+          if (!arcMap.ContainsKey(Tuple.Create(visualParent, visualNode)))
+            arcMap.Add(Tuple.Create(visualParent, visualNode), visualArc);
         }
       }
@@ -126,6 +130,5 @@
       DrawInProgress = false;
     }
-
-    protected override void pictureBox_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) {
+    protected override void pictureBox_MouseMove(object sender, MouseEventArgs e) {
       if (!DrawInProgress) {
         switch (e.Button) {
@@ -142,5 +145,4 @@
       base.pictureBox_MouseMove(sender, e);
     }
-
     protected override void pictureBox_MouseUp(object sender, MouseEventArgs e) {
       Cursor = Cursors.Default;
@@ -189,5 +191,4 @@
       base.pictureBox_MouseUp(sender, e);
     }
-
     private void DrawLineage(VisualGenealogyGraphNode node, Func<VisualGenealogyGraphNode, IEnumerable<VisualGenealogyGraphArc>> arcSelector, Func<VisualGenealogyGraphArc, VisualGenealogyGraphNode> nodeSelector) {
       if (node.Brush != null) return;
@@ -207,5 +208,4 @@
       }
     }
-
     void MarkSelectedNode() {
       var center = SelectedVisualNode.Center;
@@ -222,6 +222,4 @@
       }
     }
-
-
     private static VisualGenealogyGraphArc AddArc(IChart chart, VisualGenealogyGraphNode source, VisualGenealogyGraphNode target, Pen pen, Brush brush = null) {
       var arc = new VisualGenealogyGraphArc(chart, source, target, pen) { Brush = brush };
@@ -232,5 +230,4 @@
       return arc;
     }
-
     public virtual void ClearPrimitives() {
       foreach (var primitive in Chart.Group.Primitives) {
@@ -267,5 +264,4 @@
     }
   }
-
   internal static class Util {
     public static Color GetColor(this IGenealogyGraphNode node) {
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphView.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphView.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/GenealogyGraphView.cs	(revision 10285)
@@ -60,5 +60,5 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      genealogyGraphChart.GenealogyGraph = Content ?? null;
+      //      genealogyGraphChart.GenealogyGraph = Content ?? null;
     }
     private void Content_GraphChanged(object sender, EventArgs e) {
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 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking.Views/3.4/HeuristicLab.EvolutionTracking.Views-3.4.csproj	(revision 10285)
@@ -122,10 +122,4 @@
       <DependentUpon>GenealogyGraphChart.cs</DependentUpon>
     </Compile>
-    <Compile Include="GenealogyGraphView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="GenealogyGraphView.Designer.cs">
-      <DependentUpon>GenealogyGraphView.cs</DependentUpon>
-    </Compile>
     <Compile Include="Plugin.cs" />
     <Compile Include="Primitives\LabeledEllipse.cs" />
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Analyzers/GenealogyAnalyzer.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Analyzers/GenealogyAnalyzer.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Analyzers/GenealogyAnalyzer.cs	(revision 10285)
@@ -1,3 +1,5 @@
-﻿using HeuristicLab.Common;
+﻿using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
@@ -18,22 +20,13 @@
     private AfterManipulatorOperator<TGraph, TVertex, TContent> afterManipulatorOperator;
     private BeforeManipulatorOperator<TGraph, TVertex, TContent> beforeManipulatorOperator;
-    //    private AfterSolutionCreatorOperator<TGraph, TVertex, TContent> afterSolutionCreatorOperator;
     public string CrossoverParentsParameterName { get; set; }
     public string CrossoverChildParameterName { get; set; }
     public string ManipulatorChildParameterName { get; set; }
 
-    private string solutionCreatorIndividualParameterName;
-    public string SolutionCreatorIndividualParameterName {
-      get { return solutionCreatorIndividualParameterName; }
-      set {
-        if (solutionCreatorIndividualParameterName != null && Parameters.ContainsKey(solutionCreatorIndividualParameterName)) {
-          Parameters.Remove(solutionCreatorIndividualParameterName);
-        }
-        solutionCreatorIndividualParameterName = value;
-        if (!Parameters.ContainsKey(solutionCreatorIndividualParameterName)) {
-          Parameters.Add(new ScopeTreeLookupParameter<TContent>(solutionCreatorIndividualParameterName));
-        }
-      }
-    }
+    public IScopeTreeLookupParameter<DoubleValue> QualityParameter;
+    public IScopeTreeLookupParameter<TContent> PopulationParameter;
+
+    private const string PopulationParameterName = "Population";
+    private const string QualityParameterName = "Quality";
 
     private const string GenerationsParameterName = "Generations";
@@ -52,7 +45,4 @@
     public ILookupParameter<ResultCollection> ResultsParameter {
       get { return (ILookupParameter<ResultCollection>)Parameters[ResultsParameterName]; }
-    }
-    public IScopeTreeLookupParameter<TContent> PopulationParameter {
-      get { return (IScopeTreeLookupParameter<TContent>)Parameters[solutionCreatorIndividualParameterName]; }
     }
     public ILookupParameter<IntValue> GenerationsParameter {
@@ -76,7 +66,4 @@
     public ILookupParameter<ISolutionCreator> SolutionCreatorParameter {
       get { return (ILookupParameter<ISolutionCreator>)Parameters[SolutionCreatorParameterName]; }
-    }
-    public IntValue Generations {
-      get { return GenerationsParameter.ActualValue; }
     }
     #endregion
@@ -103,4 +90,7 @@
     public ResultCollection Results {
       get { return ResultsParameter.ActualValue; }
+    }
+    public IntValue Generations {
+      get { return GenerationsParameter.ActualValue; }
     }
     public IGenealogyGraph<TVertex, TContent> GenealogyGraph {
@@ -131,4 +121,8 @@
       Parameters.Add(new LookupParameter<IntValue>(GenerationsParameterName, "The number of generations so far."));
       Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName));
+      PopulationParameter = new ScopeTreeLookupParameter<TContent>(PopulationParameterName);
+      QualityParameter = new ScopeTreeLookupParameter<DoubleValue>(QualityParameterName);
+      Parameters.Add(PopulationParameter);
+      Parameters.Add(QualityParameter);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -144,14 +138,4 @@
 
     public override IOperation Apply() {
-      // wire the before- and after operators
-      //      if (EnableSolutionCreatorTracking.Value) {
-      //        if (afterSolutionCreatorOperator == null) {
-      //          afterSolutionCreatorOperator = new AfterSolutionCreatorOperator<TGraph, TVertex, TContent>();
-      //          afterSolutionCreatorOperator.NewIndividualParameterName = SolutionCreatorIndividualParameterName;
-      //        }
-      //        var instrumentedSolutionCreator = (InstrumentedOperator)SolutionCreator;
-      //        instrumentedSolutionCreator.AfterExecutionOperators.Add(afterSolutionCreatorOperator);
-      //      }
-
       if (Generations.Value == 0) {
         foreach (var individual in PopulationParameter.ActualValue) {
@@ -162,39 +146,50 @@
           GenealogyGraph.AddVertex(vertex);
         }
+        // at the beginning we add the before/after operators to the instrumented operators
+        if (EnableCrossoverTracking.Value) {
+          if (afterCrossoverOperator == null) {
+            afterCrossoverOperator = new AfterCrossoverOperator<TGraph, TVertex, TContent>();
+            afterCrossoverOperator.ParentsParameter.ActualName = CrossoverParentsParameterName;
+            afterCrossoverOperator.ChildParameter.ActualName = CrossoverChildParameterName;
+          }
+          var instrumentedCrossover = (InstrumentedOperator)Crossover;
+          instrumentedCrossover.AfterExecutionOperators.Add(afterCrossoverOperator);
+        }
+
+        if (EnableManipulatorTracking.Value && Manipulator != null) {
+          if (beforeManipulatorOperator == null) {
+            beforeManipulatorOperator = new BeforeManipulatorOperator<TGraph, TVertex, TContent>();
+            beforeManipulatorOperator.ChildParameter.ActualName = ManipulatorChildParameterName;
+          }
+          if (afterManipulatorOperator == null) {
+            afterManipulatorOperator = new AfterManipulatorOperator<TGraph, TVertex, TContent>();
+            afterManipulatorOperator.ChildParameter.ActualName = ManipulatorChildParameterName;
+          }
+          var instrumentedManipulator = (InstrumentedOperator)Manipulator;
+          instrumentedManipulator.BeforeExecutionOperators.Add(beforeManipulatorOperator);
+          instrumentedManipulator.AfterExecutionOperators.Add(afterManipulatorOperator);
+        }
       } else {
-        // add missing individuals in the current generation
+        // add missing elite individuals in the current generation 
+        // TODO: optimize for speed
+        var currGen = new HashSet<TContent>(GenealogyGraph.Ranks[Generations.Value].Select(x => x.Content));
         foreach (var individual in PopulationParameter.ActualValue) {
-          if (!GenealogyGraph.Contains(individual)) continue;
+          if (currGen.Contains(individual)) continue;
           // it is an elite which was already added to the graph in the previous generation
           var vertex = new TVertex {
             Content = individual,
-            Rank = Generations.Value
+            Rank = Generations.Value,
+            IsElite = true
           };
           GenealogyGraph.AddVertex(vertex);
         }
       }
-
-      if (EnableCrossoverTracking.Value) {
-        if (afterCrossoverOperator == null) {
-          afterCrossoverOperator = new AfterCrossoverOperator<TGraph, TVertex, TContent>();
-          afterCrossoverOperator.ParentsParameterName = CrossoverParentsParameterName;
-          afterCrossoverOperator.ChildParameterName = CrossoverChildParameterName;
+      // update qualities for the nodes in the graph
+      var population = PopulationParameter.ActualValue.ToList();
+      var qualities = QualityParameter.ActualValue.ToList();
+      for (int i = 0; i < population.Count; ++i) {
+        foreach (var v in GenealogyGraph[population[i]]) {
+          v.Quality = qualities[i].Value;
         }
-        var instrumentedCrossover = (InstrumentedOperator)Crossover;
-        instrumentedCrossover.AfterExecutionOperators.Add(afterCrossoverOperator);
-      }
-
-      if (EnableManipulatorTracking.Value) {
-        if (beforeManipulatorOperator == null) {
-          beforeManipulatorOperator = new BeforeManipulatorOperator<TGraph, TVertex, TContent>();
-          beforeManipulatorOperator.ChildParameterName = ManipulatorChildParameterName;
-        }
-        if (afterManipulatorOperator == null) {
-          afterManipulatorOperator = new AfterManipulatorOperator<TGraph, TVertex, TContent>();
-          afterManipulatorOperator.ChildParameterName = ManipulatorChildParameterName;
-        }
-        var instrumentedManipulator = (InstrumentedOperator)Manipulator;
-        instrumentedManipulator.BeforeExecutionOperators.Add(beforeManipulatorOperator);
-        instrumentedManipulator.AfterExecutionOperators.Add(afterManipulatorOperator);
       }
 
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/DirectedGraph/Interfaces/IVertex.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/DirectedGraph/Interfaces/IVertex.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/DirectedGraph/Interfaces/IVertex.cs	(revision 10285)
@@ -42,5 +42,6 @@
   }
 
-  public interface IVertex<T> : IVertex {
+  public interface IVertex<T> : IVertex
+  where T : class,IItem {
     T Content { get; set; }
   }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/DirectedGraph/Vertex.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/DirectedGraph/Vertex.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/DirectedGraph/Vertex.cs	(revision 10285)
@@ -77,6 +77,6 @@
     // (they do not appear in the nodes Dictionary). It is the programmers responsibility to 
     // enforce the correct and desired behavior.
-    public void AddForwardArc(IVertex target, double weight = 0.0, object data = null) {
-      var e = new Arc { Source = this, Target = target, Data = data, Weight = weight };
+    public void AddForwardArc(IVertex target, double w = 0.0, object data = null) {
+      var e = new Arc { Source = this, Target = target, Data = data, Weight = w };
       if (OutArcs == null) OutArcs = new List<IArc> { e };
       else OutArcs.Add(e);
@@ -92,6 +92,6 @@
       if (InArcs == null) { InArcs = new List<IArc> { arc }; } else { InArcs.Add(arc); }
     }
-    public void AddReverseArc(IVertex source, double weight = 0.0, object data = null) {
-      var e = new Arc { Source = source, Target = this, Data = data, Weight = weight };
+    public void AddReverseArc(IVertex source, double w = 0.0, object data = null) {
+      var e = new Arc { Source = source, Target = this, Data = data, Weight = w };
       if (InArcs == null) InArcs = new List<IArc> { e };
       else InArcs.Add(e);
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphArc.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphArc.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphArc.cs	(revision 10285)
@@ -27,5 +27,25 @@
   [StorableClass]
   [Item("GenealogyGraphArc", "A graph arc connecting two GenealogyGraphNodes and holding some data.")]
-  public class GenealogyGraphArc<T> : Arc, IGenealogyGraphArc where T : class,IItem {
+  public class GenealogyGraphArc : Arc, IGenealogyGraphArc {
+    [StorableConstructor]
+    protected GenealogyGraphArc(bool deserializing) : base(deserializing) { }
+    protected GenealogyGraphArc(GenealogyGraphArc original, Cloner cloner)
+      : base(original, cloner) {
+    }
+
+    public GenealogyGraphArc() { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new GenealogyGraphArc(this, cloner);
+    }
+    public new IGenealogyGraphNode Source { get; set; }
+    public new IGenealogyGraphNode Target { get; set; }
+
+
+  }
+
+  [StorableClass]
+  [Item("GenealogyGraphArc", "")]
+  public class GenealogyGraphArc<T> : GenealogyGraphArc where T : class,IItem {
     [StorableConstructor]
     protected GenealogyGraphArc(bool deserializing) : base(deserializing) { }
@@ -34,10 +54,17 @@
       Data = (T)original.Data.Clone();
     }
+    public GenealogyGraphArc() { }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new GenealogyGraphArc<T>(this, cloner);
     }
-    public new IGenealogyGraphNode Source { get; set; }
-    public new IGenealogyGraphNode Target { get; set; }
-    public new T Data { get; set; }
+    public new T Data {
+      get {
+        return (T)base.Data;
+      }
+      set {
+        base.Data = value;
+      }
+    }
   }
 }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphNode.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphNode.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphNode.cs	(revision 10285)
@@ -43,10 +43,10 @@
     public new List<IGenealogyGraphArc> InArcs {
       get {
-        return base.InArcs.Cast<IGenealogyGraphArc>().ToList();
+        return base.InArcs == null ? null : base.InArcs.Cast<IGenealogyGraphArc>().ToList();
       }
     }
     public new List<IGenealogyGraphArc> OutArcs {
       get {
-        return base.OutArcs.Cast<IGenealogyGraphArc>().ToList();
+        return base.OutArcs == null ? null : base.OutArcs.Cast<IGenealogyGraphArc>().ToList();
       }
     }
@@ -109,10 +109,20 @@
       return Quality.CompareTo(other.Quality);
     }
+
+    public new void AddForwardArc(IVertex target, double w = 0, object data = null) {
+      var e = new GenealogyGraphArc { Source = this, Target = (IGenealogyGraphNode)target, Data = data, Weight = w };
+      base.AddForwardArc(e);
+    }
+    public new void AddReverseArc(IVertex source, double w = 0.0, object data = null) {
+      var e = new GenealogyGraphArc { Source = (IGenealogyGraphNode)source, Target = this, Data = data, Weight = w };
+      base.AddReverseArc(e);
+    }
   }
 
   [StorableClass]
   [Item("GenealogyGraphNode", "A genealogy graph node which also has a Content")]
-  public class GenealogyGraphNode<T> : GenealogyGraphNode, IGenealogyGraphNode<T> {
+  public class GenealogyGraphNode<T> : GenealogyGraphNode, IGenealogyGraphNode<T> where T : class,IItem {
     public T Content { get; set; }
+
   }
 }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphArc.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphArc.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphArc.cs	(revision 10285)
@@ -20,9 +20,14 @@
 #endregion
 
+using HeuristicLab.Core;
+
 namespace HeuristicLab.EvolutionTracking {
   public interface IGenealogyGraphArc : IArc {
     new IGenealogyGraphNode Source { get; set; }
     new IGenealogyGraphNode Target { get; set; }
-    object Data { get; set; }
+  }
+
+  public interface IGenealogyGraphArc<T> : IGenealogyGraphArc where T : class, IItem {
+    T Data { get; set; }
   }
 }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphNode.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphNode.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphNode.cs	(revision 10285)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Core;
 
 namespace HeuristicLab.EvolutionTracking {
@@ -27,5 +28,4 @@
     IEnumerable<IGenealogyGraphNode> Ancestors();
     IEnumerable<IGenealogyGraphNode> Descendants();
-
     new List<IGenealogyGraphArc> InArcs { get; }
     new List<IGenealogyGraphArc> OutArcs { get; }
@@ -36,5 +36,7 @@
   }
 
-  public interface IGenealogyGraphNode<T> : IGenealogyGraphNode, IVertex<T> { }
+  public interface IGenealogyGraphNode<T> : IGenealogyGraphNode, IVertex<T> where T : class,IItem {
+
+  }
 
 }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/AfterCrossoverOperator.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/AfterCrossoverOperator.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/AfterCrossoverOperator.cs	(revision 10285)
@@ -33,36 +33,11 @@
     where TVertex : class,IGenealogyGraphNode<TContent>, new()
     where TContent : class,IItem {
-
-    private string parentsParameterName;
-    public string ParentsParameterName {
-      get { return parentsParameterName; }
-      set {
-        if (parentsParameterName != null && Parameters.ContainsKey(parentsParameterName)) Parameters.Remove(parentsParameterName); // remove old parameter
-        parentsParameterName = value;
-        if (!Parameters.ContainsKey(parentsParameterName)) Parameters.Add(new ScopeTreeLookupParameter<TContent>(parentsParameterName));
-      }
-    }
-    private string childParameterName;
-    public string ChildParameterName {
-      get { return childParameterName; }
-      set {
-        if (childParameterName != null && Parameters.ContainsKey(childParameterName)) Parameters.Remove(childParameterName);
-        childParameterName = value;
-        if (!Parameters.ContainsKey(childParameterName)) Parameters.Add(new LookupParameter<TContent>(childParameterName));
-      }
-    }
-
-    public IScopeTreeLookupParameter<TContent> ParentsParameter {
-      get { return (IScopeTreeLookupParameter<TContent>)Parameters[ParentsParameterName]; }
-    }
-
-    public ILookupParameter<TContent> ChildParameter {
-      get { return (ILookupParameter<TContent>)Parameters[ChildParameterName]; }
-    }
+    private const string defaultParentsParameterName = "Parents";
+    private const string defaultChildParameterName = "Child";
+    public IScopeTreeLookupParameter<TContent> ParentsParameter;
+    public ILookupParameter<TContent> ChildParameter;
 
     protected AfterCrossoverOperator(AfterCrossoverOperator<TGraph, TVertex, TContent> original, Cloner cloner)
       : base(original, cloner) {
-      ParentsParameterName = original.ParentsParameterName;
-      ChildParameterName = original.ChildParameterName;
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -70,10 +45,16 @@
     }
 
-    public AfterCrossoverOperator() { }
+    public AfterCrossoverOperator() {
+      ParentsParameter = new ScopeTreeLookupParameter<TContent>(defaultParentsParameterName);
+      ChildParameter = new LookupParameter<TContent>(defaultChildParameterName);
+      Parameters.Add(ParentsParameter);
+      Parameters.Add(ChildParameter);
+    }
 
     public override IOperation Apply() {
       //      var parentVertices = ParentsParameter.ActualValue.Select(x => GenealogyGraph[x].Last()).ToList();
       var lastGen = GenealogyGraph.Ranks[Generations.Value].ToList();
-      var parentVertices = ExecutionContext.Scope.SubScopes.Select(s => lastGen[int.Parse(s.Name)]).ToList();
+      var parentVertices = ExecutionContext.Scope.SubScopes.Select(s => lastGen[int.Parse(s.Name)]).ToList(); // because the individuals in the execution scope are copies of the ones in the graph
+
       var childVertex = new TVertex {
         Content = ChildParameter.ActualValue,
@@ -85,4 +66,6 @@
         v.AddForwardArc(childVertex);
       }
+      //      if (parentVertices[0].Content == parentVertices[1].Content)
+      //        throw new Exception("Self-crossover");
       return base.Apply();
     }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/AfterManipulatorOperator.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/AfterManipulatorOperator.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/AfterManipulatorOperator.cs	(revision 10285)
@@ -33,19 +33,7 @@
     where TContent : class,IItem {
 
-    private string childParameterName;
-    public string ChildParameterName {
-      get { return childParameterName; }
-      set {
-        if (childParameterName != null && Parameters.ContainsKey(childParameterName)) Parameters.Remove(childParameterName);
-        childParameterName = value;
-        if (!Parameters.ContainsKey(childParameterName)) Parameters.Add(new LookupParameter<TContent>(childParameterName));
-      }
-    }
+    private const string ChildParameterName = "Child";
+    public ILookupParameter<TContent> ChildParameter;
 
-    #region parameter properties
-    public ILookupParameter<TContent> ChildParameter {
-      get { return (ILookupParameter<TContent>)Parameters[ChildParameterName]; }
-    }
-    #endregion
     protected AfterManipulatorOperator(AfterManipulatorOperator<TGraph, TVertex, TContent> original, Cloner cloner)
       : base(original, cloner) {
@@ -55,5 +43,8 @@
     }
 
-    public AfterManipulatorOperator() { }
+    public AfterManipulatorOperator() {
+      ChildParameter = new LookupParameter<TContent>(ChildParameterName);
+      Parameters.Add(ChildParameter);
+    }
 
     public override IOperation Apply() {
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs	(revision 10285)
@@ -20,4 +20,6 @@
 #endregion
 
+using System.Collections.Generic;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -32,19 +34,8 @@
     where TVertex : class,IGenealogyGraphNode<TContent>, new()
     where TContent : class,IItem {
-    private string childParameterName;
-    public string ChildParameterName {
-      get { return childParameterName; }
-      set {
-        if (childParameterName != null && Parameters.ContainsKey(childParameterName)) Parameters.Remove(childParameterName);
-        childParameterName = value;
-        if (!Parameters.ContainsKey(childParameterName)) Parameters.Add(new LookupParameter<TContent>(childParameterName));
-      }
-    }
 
-    #region parameter properties
-    public ILookupParameter<TContent> ChildParameter {
-      get { return (ILookupParameter<TContent>)Parameters[ChildParameterName]; }
-    }
-    #endregion
+    private const string ChildParameterName = "Child";
+    public ILookupParameter<TContent> ChildParameter;
+
     protected BeforeManipulatorOperator(BeforeManipulatorOperator<TGraph, TVertex, TContent> original, Cloner cloner)
       : base(original, cloner) {
@@ -54,10 +45,31 @@
     }
 
-    public BeforeManipulatorOperator() { }
+    public BeforeManipulatorOperator() {
+      ChildParameter = new LookupParameter<TContent>(ChildParameterName);
+      Parameters.Add(ChildParameter);
+    }
 
     public override IOperation Apply() {
       if (GenealogyGraph.Contains(ChildParameter.ActualValue)) {
         // if the individual has been affected by crossover before mutation, we keep it in the graph and feed a clone of it to the mutation operator
-        ChildParameter.ActualValue = (TContent)ChildParameter.ActualValue.Clone();
+        var child = ChildParameter.ActualValue;
+        var clone = (TContent)child.Clone();
+        var vertex = GenealogyGraph[child].Last();
+        vertex.Content = clone;
+        GenealogyGraph.Ranks[vertex.Rank].Remove(vertex);
+        var newVertex = new TVertex {
+          Content = child,
+          Rank = vertex.Rank
+        };
+        vertex.Rank -= 0.5;
+        if (!GenealogyGraph.Ranks.ContainsKey(vertex.Rank)) {
+          GenealogyGraph.Ranks[vertex.Rank] = new LinkedList<TVertex>();
+        }
+        GenealogyGraph.Ranks[vertex.Rank].AddLast(vertex);
+
+        newVertex.AddForwardArc(vertex);
+        vertex.AddReverseArc(vertex);
+      } else {
+        // mutation should never happen without crossover 
       }
       return base.Apply();
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/EvolutionTrackingOperator.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/EvolutionTrackingOperator.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/EvolutionTrackingOperator.cs	(revision 10285)
@@ -33,13 +33,13 @@
     where TContent : class,IItem {
     // evolution tracking-related parameters
-    private const string ResultsParameterName = "Results";
-    private const string PopulationGraphParameterName = "PopulationGraph";
-    private const string GenerationsParameterName = "Generations";
+    private const string resultsParameterName = "Results";
+    private const string populationGraphParameterName = "PopulationGraph";
+    private const string generationsParameterName = "Generations";
 
     public ILookupParameter<ResultCollection> ResultsParameter {
-      get { return (ILookupParameter<ResultCollection>)Parameters[ResultsParameterName]; }
+      get { return (ILookupParameter<ResultCollection>)Parameters[resultsParameterName]; }
     }
     public ILookupParameter<IntValue> GenerationsParameter {
-      get { return (ILookupParameter<IntValue>)Parameters[GenerationsParameterName]; }
+      get { return (ILookupParameter<IntValue>)Parameters[generationsParameterName]; }
     }
     public ResultCollection Results {
@@ -52,9 +52,9 @@
       get {
         IResult result;
-        if (!Results.ContainsKey(PopulationGraphParameterName)) {
-          result = new Result(PopulationGraphParameterName, new GenealogyGraph<TVertex, TContent>());
+        if (!Results.ContainsKey(populationGraphParameterName)) {
+          result = new Result(populationGraphParameterName, new GenealogyGraph<TVertex, TContent>());
           Results.Add(result);
         } else {
-          result = Results[PopulationGraphParameterName];
+          result = Results[populationGraphParameterName];
         }
         var graph = (GenealogyGraph<TVertex, TContent>)result.Value;
@@ -63,6 +63,6 @@
     }
     public EvolutionTrackingOperator() {
-      Parameters.Add(new LookupParameter<IntValue>(GenerationsParameterName));
-      Parameters.Add(new LookupParameter<ResultCollection>(ResultsParameterName));
+      Parameters.Add(new LookupParameter<IntValue>(generationsParameterName));
+      Parameters.Add(new LookupParameter<ResultCollection>(resultsParameterName));
     }
     protected EvolutionTrackingOperator(EvolutionTrackingOperator<TGraph, TVertex, TContent> original, Cloner cloner)
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/SymbolGraph.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/SymbolGraph.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/SymbolGraph.cs	(revision 10285)
@@ -76,4 +76,6 @@
     public IVertex Target { get; set; }
     public double Weight { get; set; }
+
+    public object Data { get; set; }
   }
 }
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 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4.csproj	(revision 10285)
@@ -167,4 +167,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, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Visualization.ChartControlsExtensions-3.3.dll</HintPath>
@@ -195,5 +199,7 @@
       <DependentUpon>InteractiveSymbolicExpressionTreeChart.cs</DependentUpon>
     </Compile>
-    <Compile Include="LatexSymbolicDataAnalysisModelView.cs" />
+    <Compile Include="LatexSymbolicDataAnalysisModelView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Include="LatexSymbolicDataAnalysisModelView.designer.cs">
       <DependentUpon>LatexSymbolicDataAnalysisModelView.cs</DependentUpon>
@@ -212,4 +218,10 @@
     <Compile Include="SlidingWindowDataView.Designer.cs">
       <DependentUpon>SlidingWindowDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="SymbolicDataAnalysisGenealogyView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="SymbolicDataAnalysisGenealogyView.Designer.cs">
+      <DependentUpon>SymbolicDataAnalysisGenealogyView.cs</DependentUpon>
     </Compile>
     <Compile Include="TextualSymbolicDataAnalysisModelView.cs">
@@ -295,4 +307,12 @@
       <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4</Name>
       <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.EvolutionTracking.Views\3.4\HeuristicLab.EvolutionTracking.Views-3.4.csproj">
+      <Project>{318dfe8c-ca23-4f1b-a4ac-62b425060241}</Project>
+      <Name>HeuristicLab.EvolutionTracking.Views-3.4</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.EvolutionTracking\3.4\HeuristicLab.EvolutionTracking-3.4.csproj">
+      <Project>{1f75cea3-464f-4a6f-b2f0-04b9841ebc16}</Project>
+      <Name>HeuristicLab.EvolutionTracking-3.4</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Symbolic\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj">
@@ -323,4 +343,9 @@
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="SymbolicDataAnalysisGenealogyView.resx">
+      <DependentUpon>SymbolicDataAnalysisGenealogyView.cs</DependentUpon>
+    </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisGenealogyView.Designer.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisGenealogyView.Designer.cs	(revision 10285)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisGenealogyView.Designer.cs	(revision 10285)
@@ -0,0 +1,61 @@
+﻿using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.Visualization;
+using TGraph = HeuristicLab.EvolutionTracking.GenealogyGraph<HeuristicLab.EvolutionTracking.GenealogyGraphNode<HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ISymbolicExpressionTree>, HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ISymbolicExpressionTree>;
+using TVertex = HeuristicLab.EvolutionTracking.GenealogyGraphNode<HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ISymbolicExpressionTree>;
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
+  partial class SymbolicDataAnalysisGenealogyView {
+    /// <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.genealogyGraphChart1 = new HeuristicLab.EvolutionTracking.Views.GenealogyGraphChart<TGraph, TVertex, ISymbolicExpressionTree>();
+      this.SuspendLayout();
+      // 
+      // genealogyGraphChart1
+      // 
+      this.genealogyGraphChart1.BackColor = System.Drawing.SystemColors.Control;
+      this.genealogyGraphChart1.Chart = new Chart(0, 0, genealogyGraphChart1.PreferredSize.Width, genealogyGraphChart1.PreferredSize.Height);
+      this.genealogyGraphChart1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.genealogyGraphChart1.Location = new System.Drawing.Point(0, 0);
+      this.genealogyGraphChart1.LockGenealogy = false;
+      this.genealogyGraphChart1.Name = "genealogyGraphChart1";
+      this.genealogyGraphChart1.ScaleOnResize = true;
+      this.genealogyGraphChart1.SimpleLineages = false;
+      this.genealogyGraphChart1.Size = new System.Drawing.Size(150, 150);
+      this.genealogyGraphChart1.TabIndex = 0;
+      // 
+      // SymbolicDataAnalysisGenealogyView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.genealogyGraphChart1);
+      this.Name = "SymbolicDataAnalysisGenealogyView";
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private EvolutionTracking.Views.GenealogyGraphChart<TGraph, TVertex, ISymbolicExpressionTree> genealogyGraphChart1;
+  }
+}
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisGenealogyView.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisGenealogyView.cs	(revision 10285)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/SymbolicDataAnalysisGenealogyView.cs	(revision 10285)
@@ -0,0 +1,58 @@
+﻿using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+using TGraph = HeuristicLab.EvolutionTracking.GenealogyGraph
+                <
+                  HeuristicLab.EvolutionTracking.GenealogyGraphNode<HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ISymbolicExpressionTree>,
+                  HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ISymbolicExpressionTree
+                >;
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views {
+  [View("SymbolicDataAnalysisGenealogyView")]
+  [Content(typeof(TGraph), IsDefaultView = false)]
+  public sealed partial class SymbolicDataAnalysisGenealogyView : ItemView {
+    public new TGraph Content {
+      get { return (TGraph)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public SymbolicDataAnalysisGenealogyView() {
+      InitializeComponent();
+    }
+
+    protected override void DeregisterContentEvents() {
+      // TODO: Deregister your event handlers here
+      base.DeregisterContentEvents();
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      // TODO: Register your event handlers here
+    }
+
+    #region Event Handlers (Content)
+    // TODO: Put event handlers of the content here
+    #endregion
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        // TODO: Add code when content has been changed and is null
+      } else {
+        genealogyGraphChart1.GenealogyGraph = Content;
+        // TODO: Add code when content has been changed and is not null
+      }
+    }
+
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      // TODO: Enable or disable controls based on whether the content is null or the view is set readonly
+    }
+
+    #region Event Handlers (child controls)
+    // TODO: Put event handlers of child controls here.
+    #endregion
+  }
+}
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 10285)
@@ -358,11 +358,11 @@
       // add tracking analyzer
       foreach (var op in operators.OfType<GenealogyAnalyzer<TGraph, TVertex, ISymbolicExpressionTree>>()) {
+        // get crossover parameter names
         var crossover = operators.OfType<ISymbolicExpressionTreeCrossover>().First();
         op.CrossoverParentsParameterName = crossover.ParentsParameter.Name;
         op.CrossoverChildParameterName = crossover.ChildParameter.Name;
+        // get munipulator parameter names
         var manipulator = operators.OfType<ISymbolicExpressionTreeManipulator>().First();
         op.ManipulatorChildParameterName = manipulator.SymbolicExpressionTreeParameter.Name;
-        var creator = operators.OfType<ISymbolicExpressionTreeCreator>().First();
-        op.SolutionCreatorIndividualParameterName = creator.SymbolicExpressionTreeParameter.Name;
       }
     }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisSingleObjectiveProblem.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisSingleObjectiveProblem.cs	(revision 10278)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisSingleObjectiveProblem.cs	(revision 10285)
@@ -25,7 +25,13 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.EvolutionTracking;
 using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+using TGraph = HeuristicLab.EvolutionTracking.IGenealogyGraph<HeuristicLab.EvolutionTracking.GenealogyGraphNode<HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ISymbolicExpressionTree>,
+                                                              HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ISymbolicExpressionTree>;
+using TVertex = HeuristicLab.EvolutionTracking.GenealogyGraphNode<HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.ISymbolicExpressionTree>;
 
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
@@ -115,4 +121,9 @@
         op.MaximizationParameter.ActualName = MaximizationParameterName;
       }
+
+      foreach (var op in Operators.OfType<GenealogyAnalyzer<TGraph, TVertex, ISymbolicExpressionTree>>()) {
+        op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
+        op.PopulationParameter.ActualName = Evaluator.SymbolicExpressionTreeParameter.ActualName;
+      }
     }
   }
