Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Analyzers/GenealogyAnalyzer.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Analyzers/GenealogyAnalyzer.cs	(revision 11031)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Analyzers/GenealogyAnalyzer.cs	(revision 11032)
@@ -101,10 +101,4 @@
 
     #region properties
-    public ICrossover Crossover {
-      get { return CrossoverParameter.ActualValue; }
-    }
-    public IManipulator Manipulator {
-      get { return ManipulatorParameter.ActualValue; }
-    }
     public ICrossoverOperator<T> BeforeCrossoverOperator {
       get { return BeforeCrossoverOperatorParameter.Value; }
@@ -119,7 +113,4 @@
       get { return AfterManipulatorOperatorParameter.Value; }
     }
-    public ISolutionCreator SolutionCreator {
-      get { return SolutionCreatorParameter.ActualValue; }
-    }
     public BoolValue EnableCrossoverTracking {
       get { return EnableCrossoverTrackingParameter.Value; }
@@ -130,10 +121,4 @@
     public BoolValue EnableSolutionCreatorTracking {
       get { return EnableSolutionCreatorTrackingParameter.Value; }
-    }
-    public ResultCollection Results {
-      get { return ResultsParameter.ActualValue; }
-    }
-    public IntValue Generations {
-      get { return GenerationsParameter.ActualValue; }
     }
 
@@ -141,9 +126,10 @@
       get {
         IResult result;
-        if (!Results.ContainsKey(PopulationGraphParameterName)) {
+        var results = ResultsParameter.ActualValue;
+        if (!results.ContainsKey(PopulationGraphParameterName)) {
           result = new Result(PopulationGraphParameterName, new GenealogyGraph<T>());
-          Results.Add(result);
+          results.Add(result);
         } else {
-          result = Results[PopulationGraphParameterName];
+          result = results[PopulationGraphParameterName];
         }
         var graph = (IGenealogyGraph<T>)result.Value;
@@ -213,6 +199,7 @@
     private void ConfigureTrackingOperators() {
       // at the beginning we add the before/after operators to the instrumented operators
-      if (Crossover != null) {
-        var instrumentedCrossover = (InstrumentedOperator)Crossover;
+      var crossover = CrossoverParameter.ActualValue;
+      if (crossover != null) {
+        var instrumentedCrossover = (InstrumentedOperator)crossover;
         instrumentedCrossover.AfterExecutionOperators.Clear();
         instrumentedCrossover.BeforeExecutionOperators.Clear();
@@ -227,7 +214,7 @@
         }
       }
-
-      if (Manipulator != null) {
-        var instrumentedManipulator = (InstrumentedOperator)Manipulator;
+      var manipulator = ManipulatorParameter.ActualValue;
+      if (manipulator != null) {
+        var instrumentedManipulator = (InstrumentedOperator)manipulator;
         instrumentedManipulator.AfterExecutionOperators.Clear();
         instrumentedManipulator.BeforeExecutionOperators.Clear();
@@ -248,10 +235,11 @@
       var qualities = QualityParameter.ActualValue.ToList();
 
-      if (Generations.Value == 0) {
+      int currentGeneration = GenerationsParameter.ActualValue.Value;
+      if (currentGeneration == 0) {
         ConfigureTrackingOperators();
 
         for (int i = 0; i < population.Count; ++i) {
           var individual = population[i];
-          var vertex = new GenealogyGraphNode<T>(individual) { Rank = Generations.Value };
+          var vertex = new GenealogyGraphNode<T>(individual) { Rank = currentGeneration };
           GenealogyGraph.AddVertex(vertex);
           // save the vertex id in the individual scope (so that we can identify graph indices)
@@ -276,5 +264,5 @@
 
           var vertex = new GenealogyGraphNode<T>(prevVertex.Content) {
-            Rank = Generations.Value,
+            Rank = currentGeneration,
             Quality = prevVertex.Quality,
             IsElite = false
@@ -301,5 +289,5 @@
 
       // remove extra graph nodes (added by the instrumented operators in the case of offspring selection)
-      var discardedOffspring = GenealogyGraph.Ranks[Generations.Value].Select(x => (T)x.Content).Except(population).ToList();
+      var discardedOffspring = GenealogyGraph.Ranks[currentGeneration].Select(x => (T)x.Content).Except(population).ToList();
       foreach (var individual in discardedOffspring) {
         var vertex = GenealogyGraph.GetVertex(individual);
Index: /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs
===================================================================
--- /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs	(revision 11031)
+++ /branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs	(revision 11032)
@@ -20,5 +20,4 @@
 #endregion
 
-using System;
 using System.Linq;
 using HeuristicLab.Common;
@@ -52,8 +51,4 @@
       // since mutation always takes place after crossover, the vertex for the current child is already in the tree
       var v = (IGenealogyGraphNode<T>)GenealogyGraph.GetVertex(ChildParameter.ActualValue);
-
-      if (!v.Rank.IsAlmost(Generations.Value + 1)) {
-        throw new Exception("Child rank should be generations.value + 1");
-      }
       var clone = (T)ChildParameter.ActualValue.Clone();
 
