Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs	(revision 10801)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Operators/BeforeManipulatorOperator.cs	(revision 10822)
@@ -50,5 +50,5 @@
       if (GenealogyGraph.Contains(ChildParameter.ActualValue)) {
         // if the graph already contains a vertex representing the child, it means that the child is a product of crossover
-        // when mutation follows after crossover, some changes need to be made
+        // when mutation follows after crossover, some changes need to be made to the graph to maintain consistency
         var child = ChildParameter.ActualValue;
         var clone = (T)child.Clone();
@@ -58,6 +58,4 @@
         // adjust parent-child(clone) relationship in the graph
         var parents = vChild.Parents;
-        // if there's a fragment, save it 
-        vChild.InArcs = new List<IGenealogyGraphArc>();
         foreach (var p in parents) {
           foreach (var a in p.OutArcs.Where(a => a.Target == vChild)) {
@@ -66,8 +64,8 @@
           vClone.AddReverseArc(p);
         }
+        vClone.InArcs.Last().Data = vChild.InArcs.Last().Data;
+        vChild.InArcs = new List<IGenealogyGraphArc>();
         vChild.AddReverseArc(vClone);
         vClone.AddForwardArc(vChild);
-        vClone.InArcs.Last().Data = vChild.InArcs.Last().Data;
-
       } else { // this needs to be checked
         var vChild = new GenealogyGraphNode<T> { Content = ChildParameter.ActualValue, Rank = Generations.Value };
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 10801)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 10822)
@@ -28,5 +28,4 @@
 using HeuristicLab.Data;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.EvolutionTracking;
 using HeuristicLab.Optimization;
 using HeuristicLab.Parameters;
@@ -358,6 +357,6 @@
         op.BeforeCrossoverOperator = new SymbolicDataAnalysisExpressionBeforeCrossoverOperator();
         op.AfterCrossoverOperator = new SymbolicDataAnalysisExpressionAfterCrossoverOperator();
-        op.BeforeManipulatorOperator = new BeforeManipulatorOperator<ISymbolicExpressionTree>();
-        op.AfterManipulatorOperator = new AfterManipulatorOperator<ISymbolicExpressionTree>();
+        op.BeforeManipulatorOperator = new SymbolicDataAnalysisExpressionBeforeManipulatorOperator();
+        op.AfterManipulatorOperator = new SymbolicDataAnalysisExpressionAfterManipulatorOperator();
         // get crossover parameter names
         var crossover = operators.OfType<ISymbolicExpressionTreeCrossover>().FirstOrDefault();
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/SymbolicDataAnalysisExpressionAfterManipulatorOperator.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/SymbolicDataAnalysisExpressionAfterManipulatorOperator.cs	(revision 10801)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Tracking/SymbolicDataAnalysisExpressionAfterManipulatorOperator.cs	(revision 10822)
@@ -30,7 +30,13 @@
         fragment = new Fragment<ISymbolicExpressionTreeNode> {
           Root = a,
-          Index1 = i
+          Index1 = i,
+          Index2 = i
         };
+        break;
       }
+
+      //      if (fragment == null) {
+      //        throw new Exception("SymbolicDataAnalysisExpressionAfterManipulatorOperator: Could not identify fragment");
+      //      }
 
       vChild.InArcs.First().Data = fragment;
