Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/DirectedGraph/Vertex.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/DirectedGraph/Vertex.cs	(revision 10292)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/DirectedGraph/Vertex.cs	(revision 10293)
@@ -78,7 +78,7 @@
     // enforce the correct and desired behavior.
     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);
+      var arc = new Arc { Source = this, Target = target, Data = data, Weight = w };
+      if (OutArcs == null) OutArcs = new List<IArc> { arc };
+      else OutArcs.Add(arc);
     }
     public void AddForwardArc(IArc arc) {
@@ -93,7 +93,7 @@
     }
     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);
+      var arc = new Arc { Source = source, Target = this, Data = data, Weight = w };
+      if (InArcs == null) InArcs = new List<IArc> { arc };
+      else InArcs.Add(arc);
     }
 
Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphArc.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphArc.cs	(revision 10292)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphArc.cs	(revision 10293)
@@ -39,8 +39,14 @@
       return new GenealogyGraphArc(this, cloner);
     }
-    public new IGenealogyGraphNode Source { get; set; }
-    public new IGenealogyGraphNode Target { get; set; }
 
+    public new IGenealogyGraphNode Source {
+      get { return (IGenealogyGraphNode)base.Source; }
+      set { base.Source = value; }
+    }
 
+    public new IGenealogyGraphNode Target {
+      get { return (IGenealogyGraphNode)base.Target; }
+      set { base.Target = value; }
+    }
   }
 
@@ -60,10 +66,6 @@
     }
     public new T Data {
-      get {
-        return (T)base.Data;
-      }
-      set {
-        base.Data = value;
-      }
+      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 10292)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphNode.cs	(revision 10293)
@@ -111,10 +111,10 @@
 
     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);
+      var arc = new GenealogyGraphArc { Source = this, Target = (IGenealogyGraphNode)target, Data = data, Weight = w };
+      base.AddForwardArc(arc);
     }
     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);
+      var arc = new GenealogyGraphArc { Source = (IGenealogyGraphNode)source, Target = this, Data = data, Weight = w };
+      base.AddReverseArc(arc);
     }
   }
@@ -124,5 +124,5 @@
   public class GenealogyGraphNode<T> : GenealogyGraphNode, IGenealogyGraphNode<T> where T : class,IItem {
     public T Content { get; set; }
-
+    public GenealogyGraphNode() { }
   }
 }
Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/AfterSolutionCreatorOperator.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/AfterSolutionCreatorOperator.cs	(revision 10292)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/AfterSolutionCreatorOperator.cs	(revision 10293)
@@ -21,5 +21,4 @@
 
 using HeuristicLab.Core;
-using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -32,27 +31,5 @@
     where TContent : class,IItem {
 
-    private string newIndividualParameterName;
-    public string NewIndividualParameterName {
-      get { return newIndividualParameterName; }
-      set {
-        if (newIndividualParameterName != null && Parameters.ContainsKey(newIndividualParameterName))
-          Parameters.Remove(newIndividualParameterName);
-        newIndividualParameterName = value;
-        if (!Parameters.ContainsKey(newIndividualParameterName)) {
-          Parameters.Add(new LookupParameter<TContent>(newIndividualParameterName));
-        }
-      }
-    }
-
-    public ILookupParameter<TContent> NewIndividualParameter {
-      get { return (ILookupParameter<TContent>)Parameters[NewIndividualParameterName]; }
-    }
-    public TContent NewIndividual { get { return NewIndividualParameter.ActualValue; } }
-
     public override IOperation Apply() {
-      var vertex = new TVertex {
-        Content = NewIndividual
-      };
-      GenealogyGraph.AddVertex(vertex);
       return base.Apply();
     }
Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs	(revision 10292)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs	(revision 10293)
@@ -20,5 +20,4 @@
 #endregion
 
-using System.Collections.Generic;
 using System.Linq;
 using HeuristicLab.Common;
@@ -52,24 +51,24 @@
     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
         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>();
+        var vChild = GenealogyGraph[child].Last();
+        var vClone = new TVertex { Content = clone, Rank = vChild.Rank - 0.5 };
+        GenealogyGraph.AddVertex(vClone);
+        // adjust parent-child(clone) relationship in the graph
+        var parents = vChild.InArcs.Select(a => a.Source);
+        vChild.InArcs.Clear();
+        foreach (var p in parents) {
+          foreach (var a in p.OutArcs) {
+            if (a.Target == vChild)
+              a.Target = vClone;
+          }
+          vClone.AddReverseArc(p);
         }
-        GenealogyGraph.Ranks[vertex.Rank].AddLast(vertex);
-
-        newVertex.AddForwardArc(vertex);
-        vertex.AddReverseArc(vertex);
-      } else {
-        // mutation should never happen without crossover 
+        vChild.AddReverseArc(vClone);
+        vClone.AddForwardArc(vChild);
+      } else { // this needs to be checked
+        var vChild = new TVertex { Content = ChildParameter.ActualValue, Rank = Generations.Value };
+        GenealogyGraph.AddVertex(vChild);
       }
       return base.Apply();
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 10292)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4.csproj	(revision 10293)
@@ -344,9 +344,4 @@
     </Content>
   </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="SymbolicDataAnalysisGenealogyView.resx">
-      <DependentUpon>SymbolicDataAnalysisGenealogyView.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/3.4/Analyzers/SymbolicDataAnalysisGenealogyAnalyzer.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisGenealogyAnalyzer.cs	(revision 10293)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisGenealogyAnalyzer.cs	(revision 10293)
@@ -0,0 +1,12 @@
+﻿using HeuristicLab.Core;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.EvolutionTracking;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Analyzers {
+  [StorableClass]
+  [Item("SymbolicDataAnalysisGenealogyAnalyzer", "")]
+  public class SymbolicDataAnalysisGenealogyAnalyzer : GenealogyAnalyzer<IGenealogyGraph<GenealogyGraphNode<ISymbolicExpressionTree>, ISymbolicExpressionTree>,
+    GenealogyGraphNode<ISymbolicExpressionTree>, ISymbolicExpressionTree> {
+  }
+}
Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Evaluators/SymbolicDataAnalysisEvaluator.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Evaluators/SymbolicDataAnalysisEvaluator.cs	(revision 10292)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Evaluators/SymbolicDataAnalysisEvaluator.cs	(revision 10293)
@@ -35,5 +35,5 @@
 namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
   [StorableClass]
-  public abstract class SymbolicDataAnalysisEvaluator<T> : SingleSuccessorOperator,
+  public abstract class SymbolicDataAnalysisEvaluator<T> : InstrumentedOperator,
     ISymbolicDataAnalysisEvaluator<T>, ISymbolicDataAnalysisInterpreterOperator, ISymbolicDataAnalysisBoundedOperator, IStochasticOperator
   where T : class, IDataAnalysisProblemData {
Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 10292)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 10293)
@@ -173,4 +173,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Analyzers\SymbolicDataAnalysisGenealogyAnalyzer.cs" />
     <Compile Include="Analyzers\SymbolicDataAnalysisSingleObjectiveValidationParetoBestSolutionAnalyzer.cs" />
     <Compile Include="Analyzers\SymbolicDataAnalysisSingleObjectiveTrainingParetoBestSolutionAnalyzer.cs" />
Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 10292)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 10293)
@@ -28,14 +28,11 @@
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.EvolutionTracking;
 using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Problems.DataAnalysis.Symbolic.Analyzers;
 using HeuristicLab.Problems.Instances;
 
-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 {
@@ -236,5 +233,5 @@
       Operators.Add(new MinAverageMaxSymbolicExpressionTreeLengthAnalyzer());
       Operators.Add(new SymbolicExpressionTreeLengthAnalyzer());
-      Operators.Add(new GenealogyAnalyzer<TGraph, TVertex, ISymbolicExpressionTree>());
+      Operators.Add(new SymbolicDataAnalysisGenealogyAnalyzer());
       ParameterizeOperators();
     }
@@ -357,5 +354,5 @@
       }
       // add tracking analyzer
-      foreach (var op in operators.OfType<GenealogyAnalyzer<TGraph, TVertex, ISymbolicExpressionTree>>()) {
+      foreach (var op in operators.OfType<SymbolicDataAnalysisGenealogyAnalyzer>()) {
         // get crossover parameter names
         var crossover = operators.OfType<ISymbolicExpressionTreeCrossover>().First();
