Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Collections/CloneableCollection.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Collections/CloneableCollection.cs	(revision 11925)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/Collections/CloneableCollection.cs	(revision 11925)
@@ -0,0 +1,41 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Collections.Generic;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.EvolutionTracking {
+  public class CloneableCollection<T> : List<T>, IDeepCloneable {
+    public CloneableCollection() { }
+
+    public CloneableCollection(IEnumerable<T> elements) : base(elements) { }
+
+    public object Clone() { return new CloneableCollection<T>(this); }
+
+    public IDeepCloneable Clone(Cloner cloner) { return cloner.Clone(this); }
+  }
+
+  public static class CloneableCollectionExtensions {
+    public static CloneableCollection<T> ToCloneableCollection<T>(this IEnumerable<T> elements) {
+      return new CloneableCollection<T>(elements);
+    }
+  }
+}
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraph.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraph.cs	(revision 11858)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraph.cs	(revision 11925)
@@ -37,5 +37,5 @@
     private Dictionary<string, IGenealogyGraphNode> idMap;
 
-    private readonly Comparison<IArc> compareArcs = (a, b) => {
+    private readonly Comparison<IArc<IDeepCloneable>> compareArcs = (a, b) => {
       if (a.Data == b.Data)
         return 0;
@@ -56,5 +56,5 @@
       RebuildDictionaries();
 
-      foreach (var arcs in Vertices.Select(v => (List<IArc>)((IVertex)v).InArcs)) { arcs.Sort(compareArcs); }
+      foreach (var arcs in Vertices.Select(v => v.InArcs.ToList())) { arcs.Sort(compareArcs); }
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -69,5 +69,5 @@
     private void AfterDeserialization() {
       RebuildDictionaries();
-      foreach (var arcs in Vertices.Select(v => (List<IArc>)((Vertex)v).InArcs)) { arcs.Sort(compareArcs); }
+      foreach (var arcs in Vertices.Select(v => v.InArcs.ToList())) { arcs.Sort(compareArcs); }
     }
     public GenealogyGraph() {
@@ -169,9 +169,4 @@
       return ColorGradient.Colors[colorIndex];
     }
-
-    public override void AddVertices(IEnumerable<IVertex> vertexList) {
-      base.AddVertices(vertexList);
-      RebuildDictionaries();
-    }
   }
 
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphArc.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphArc.cs	(revision 11858)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphArc.cs	(revision 11925)
@@ -27,5 +27,5 @@
   [StorableClass]
   [Item("GenealogyGraphArc", "A graph arc connecting two GenealogyGraphNodes and holding some data.")]
-  public class GenealogyGraphArc : Arc, IGenealogyGraphArc {
+  public class GenealogyGraphArc : Arc<IDeepCloneable>, IGenealogyGraphArc {
     [StorableConstructor]
     protected GenealogyGraphArc(bool deserializing) : base(deserializing) { }
@@ -55,4 +55,5 @@
     [StorableConstructor]
     protected GenealogyGraphArc(bool deserializing) : base(deserializing) { }
+
     protected GenealogyGraphArc(GenealogyGraphArc original, Cloner cloner)
       : base(original, cloner) {
@@ -62,4 +63,5 @@
       return new GenealogyGraphArc<T>(this, cloner);
     }
+
     public new T Data {
       get { return (T)base.Data; }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphNode.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphNode.cs	(revision 11858)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphNode.cs	(revision 11925)
@@ -30,5 +30,5 @@
   [StorableClass]
   [Item("GenealogGraphNode", "A class representing a node in the GenealogyGraph")]
-  public class GenealogyGraphNode : Vertex, IGenealogyGraphNode {
+  public class GenealogyGraphNode : Vertex<IDeepCloneable>, IGenealogyGraphNode {
     [StorableConstructor]
     protected GenealogyGraphNode(bool deserializing) : base(deserializing) { }
@@ -46,7 +46,11 @@
     }
 
+    public GenealogyGraphNode() {
+      Id = Guid.NewGuid().ToString();
+    }
+
     public GenealogyGraphNode(IDeepCloneable data)
-      : base(data) {
-      Id = Guid.NewGuid().ToString();
+      : this() {
+      Data = data;
     }
 
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphArc.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphArc.cs	(revision 11858)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphArc.cs	(revision 11925)
@@ -20,8 +20,9 @@
 #endregion
 
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 
 namespace HeuristicLab.EvolutionTracking {
-  public interface IGenealogyGraphArc : IArc {
+  public interface IGenealogyGraphArc : IArc<IDeepCloneable> {
     new IGenealogyGraphNode Source { get; }
     new IGenealogyGraphNode Target { get; }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphNode.cs
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphNode.cs	(revision 11858)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/Interfaces/IGenealogyGraphNode.cs	(revision 11925)
@@ -22,8 +22,9 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 
 namespace HeuristicLab.EvolutionTracking {
-  public interface IGenealogyGraphNode : IVertex, IComparable<IGenealogyGraphNode> {
+  public interface IGenealogyGraphNode : IVertex<IDeepCloneable>, IComparable<IGenealogyGraphNode> {
     double Rank { get; set; }
     double Quality { get; set; }
@@ -39,10 +40,11 @@
   }
 
-  public interface IGenealogyGraphNode<T> : IGenealogyGraphNode, IVertex<T> where T : class {
+  public interface IGenealogyGraphNode<T> : IGenealogyGraphNode where T : class {
     new IEnumerable<IGenealogyGraphNode<T>> Parents { get; }
     new IEnumerable<IGenealogyGraphNode<T>> Children { get; }
-
     new IEnumerable<IGenealogyGraphNode<T>> Ancestors { get; }
     new IEnumerable<IGenealogyGraphNode<T>> Descendants { get; }
+
+    new T Data { get; set; }
   }
 }
Index: branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/HeuristicLab.EvolutionTracking-3.4.csproj
===================================================================
--- branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/HeuristicLab.EvolutionTracking-3.4.csproj	(revision 11858)
+++ branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/HeuristicLab.EvolutionTracking-3.4.csproj	(revision 11925)
@@ -110,4 +110,5 @@
   <ItemGroup>
     <Compile Include="Analyzers\GenealogyAnalyzer.cs" />
+    <Compile Include="Collections\CloneableCollection.cs" />
     <Compile Include="Fragment.cs" />
     <Compile Include="Interfaces\IFragment.cs" />
