Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphChart.cs
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphChart.cs	(revision 9420)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphChart.cs	(revision 9835)
@@ -88,7 +88,9 @@
 
     public GenealogyGraphChart() {
+      //      InitializeComponent();
       Chart = new Chart(0, 0, PreferredSize.Width, PreferredSize.Height);
       x = 0;
       y = PreferredSize.Height + Cx + 2 * Diameter;
+      Chart.Mode = ChartMode.Select;
     }
 
@@ -190,13 +192,31 @@
 
     protected override void pictureBox_MouseMove(object sender, MouseEventArgs e) {
-      if (!drawing)
+      if (!drawing) {
+        switch (e.Button) {
+          case MouseButtons.Left:
+            Chart.Mode = ChartMode.Select;
+            Cursor = Cursors.Default;
+            break;
+          case MouseButtons.Middle:
+            Chart.Mode = ChartMode.Move;
+            Cursor = Cursors.Hand;
+            break;
+        }
         base.pictureBox_MouseMove(sender, e);
+      }
     }
 
     protected override void pictureBox_MouseUp(object sender, MouseEventArgs e) {
+      Cursor = Cursors.Default;
+      if (Chart.Mode == ChartMode.Move) {
+        Chart.Mode = ChartMode.Select;
+        return;
+      }
+
       if (Chart.Mode != ChartMode.Select) {
         base.pictureBox_MouseUp(sender, e);
         return;
       }
+
       var visualNodes = Chart.GetAllPrimitives(e.Location).Where(p => p is VisualGenealogyGraphNode).ToList();
       if (visualNodes.Count <= 0) {
@@ -280,4 +300,14 @@
     }
 
+    public void HighlightNodes(IEnumerable<SymbolicExpressionGenealogyGraphNode> nodes) {
+      Chart.UpdateEnabled = false;
+      ClearAllNodes();
+      foreach (var node in nodes) {
+        GetVisualGenealogyGraphNode(node).Brush = new SolidBrush(node.GetColor());
+      }
+      Chart.UpdateEnabled = true;
+      Chart.EnforceUpdate();
+    }
+
     // TODO: optimize and reduce complexity of this method
     public void HighlightNodes(IEnumerable<ISymbolicExpressionTree> trees) {
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphView.Designer.cs
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphView.Designer.cs	(revision 9420)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphView.Designer.cs	(revision 9835)
@@ -29,19 +29,16 @@
       this.components = new System.ComponentModel.Container();
       this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.genealogyGraphChart = new HeuristicLab.EvolutionaryTracking.Views.GenealogyGraphChart();
       this.symbolicExpressionTreeChart = new HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views.SymbolicExpressionTreeChart();
       this.topControlBox = new System.Windows.Forms.Panel();
+      this.graphControlsGroupBox = new System.Windows.Forms.GroupBox();
+      this.lockGenealogyCheckBox = new System.Windows.Forms.CheckBox();
+      this.highlightAllButton = new System.Windows.Forms.Button();
+      this.simpleLineagesCheckBox = new System.Windows.Forms.CheckBox();
       this.groupBox1 = new System.Windows.Forms.GroupBox();
       this.matchConstantsCheckBox = new System.Windows.Forms.CheckBox();
       this.matchVariableWeightsCheckBox = new System.Windows.Forms.CheckBox();
       this.matchVariableNamesCheckBox = new System.Windows.Forms.CheckBox();
-      this.graphControlsGroupBox = new System.Windows.Forms.GroupBox();
-      this.lockGenealogyCheckBox = new System.Windows.Forms.CheckBox();
-      this.highlightAllButton = new System.Windows.Forms.Button();
-      this.simpleLineagesCheckBox = new System.Windows.Forms.CheckBox();
-      this.selectModeButton = new System.Windows.Forms.RadioButton();
-      this.moveModeButton = new System.Windows.Forms.RadioButton();
-      this.zoomModeButton = new System.Windows.Forms.RadioButton();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.genealogyGraphChart = new HeuristicLab.EvolutionaryTracking.Views.GenealogyGraphChart();
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
       this.splitContainer.Panel1.SuspendLayout();
@@ -49,6 +46,6 @@
       this.splitContainer.SuspendLayout();
       this.topControlBox.SuspendLayout();
+      this.graphControlsGroupBox.SuspendLayout();
       this.groupBox1.SuspendLayout();
-      this.graphControlsGroupBox.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -72,18 +69,6 @@
       this.splitContainer.Panel2MinSize = 50;
       this.splitContainer.Size = new System.Drawing.Size(1066, 722);
-      this.splitContainer.SplitterDistance = 489;
+      this.splitContainer.SplitterDistance = 488;
       this.splitContainer.TabIndex = 7;
-      // 
-      // genealogyGraphChart
-      // 
-      this.genealogyGraphChart.BackColor = System.Drawing.SystemColors.Control;
-      this.genealogyGraphChart.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.genealogyGraphChart.Location = new System.Drawing.Point(0, 0);
-      this.genealogyGraphChart.LockGenealogy = false;
-      this.genealogyGraphChart.Name = "genealogyGraphChart";
-      this.genealogyGraphChart.ScaleOnResize = true;
-      this.genealogyGraphChart.SimpleLineages = false;
-      this.genealogyGraphChart.Size = new System.Drawing.Size(487, 720);
-      this.genealogyGraphChart.TabIndex = 2;
       // 
       // symbolicExpressionTreeChart
@@ -94,5 +79,5 @@
       this.symbolicExpressionTreeChart.Location = new System.Drawing.Point(0, 0);
       this.symbolicExpressionTreeChart.Name = "symbolicExpressionTreeChart";
-      this.symbolicExpressionTreeChart.Size = new System.Drawing.Size(571, 720);
+      this.symbolicExpressionTreeChart.Size = new System.Drawing.Size(572, 720);
       this.symbolicExpressionTreeChart.Spacing = 5;
       this.symbolicExpressionTreeChart.SuspendRepaint = false;
@@ -105,5 +90,4 @@
       this.topControlBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
-      this.topControlBox.Controls.Add(this.groupBox1);
       this.topControlBox.Controls.Add(this.graphControlsGroupBox);
       this.topControlBox.Location = new System.Drawing.Point(3, 3);
@@ -112,4 +96,49 @@
       this.topControlBox.TabIndex = 6;
       // 
+      // graphControlsGroupBox
+      // 
+      this.graphControlsGroupBox.Controls.Add(this.lockGenealogyCheckBox);
+      this.graphControlsGroupBox.Controls.Add(this.highlightAllButton);
+      this.graphControlsGroupBox.Controls.Add(this.simpleLineagesCheckBox);
+      this.graphControlsGroupBox.Location = new System.Drawing.Point(1, -2);
+      this.graphControlsGroupBox.Name = "graphControlsGroupBox";
+      this.graphControlsGroupBox.Size = new System.Drawing.Size(98, 44);
+      this.graphControlsGroupBox.TabIndex = 11;
+      this.graphControlsGroupBox.TabStop = false;
+      this.graphControlsGroupBox.Text = "Graph controls";
+      // 
+      // lockGenealogyCheckBox
+      // 
+      this.lockGenealogyCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
+      this.lockGenealogyCheckBox.Location = new System.Drawing.Point(66, 14);
+      this.lockGenealogyCheckBox.Name = "lockGenealogyCheckBox";
+      this.lockGenealogyCheckBox.Size = new System.Drawing.Size(24, 24);
+      this.lockGenealogyCheckBox.TabIndex = 17;
+      this.toolTip.SetToolTip(this.lockGenealogyCheckBox, "Lock genealogy");
+      this.lockGenealogyCheckBox.UseVisualStyleBackColor = true;
+      this.lockGenealogyCheckBox.CheckedChanged += new System.EventHandler(this.lockGenealogyCheckBox_CheckedChanged);
+      // 
+      // highlightAllButton
+      // 
+      this.highlightAllButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+      this.highlightAllButton.Location = new System.Drawing.Point(6, 14);
+      this.highlightAllButton.Name = "highlightAllButton";
+      this.highlightAllButton.Size = new System.Drawing.Size(24, 24);
+      this.highlightAllButton.TabIndex = 13;
+      this.toolTip.SetToolTip(this.highlightAllButton, "Fitness gradient");
+      this.highlightAllButton.UseVisualStyleBackColor = true;
+      this.highlightAllButton.Click += new System.EventHandler(this.highlightAllButton_Click);
+      // 
+      // simpleLineagesCheckBox
+      // 
+      this.simpleLineagesCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
+      this.simpleLineagesCheckBox.Location = new System.Drawing.Point(36, 14);
+      this.simpleLineagesCheckBox.Name = "simpleLineagesCheckBox";
+      this.simpleLineagesCheckBox.Size = new System.Drawing.Size(24, 24);
+      this.simpleLineagesCheckBox.TabIndex = 12;
+      this.toolTip.SetToolTip(this.simpleLineagesCheckBox, "Simple lineages");
+      this.simpleLineagesCheckBox.UseVisualStyleBackColor = true;
+      this.simpleLineagesCheckBox.CheckedChanged += new System.EventHandler(this.simpleLineagesCheckBox_CheckedChanged);
+      // 
       // groupBox1
       // 
@@ -117,5 +146,5 @@
       this.groupBox1.Controls.Add(this.matchVariableWeightsCheckBox);
       this.groupBox1.Controls.Add(this.matchVariableNamesCheckBox);
-      this.groupBox1.Location = new System.Drawing.Point(209, -2);
+      this.groupBox1.Location = new System.Drawing.Point(104, 1);
       this.groupBox1.Name = "groupBox1";
       this.groupBox1.Size = new System.Drawing.Size(325, 44);
@@ -163,87 +192,15 @@
       this.matchVariableNamesCheckBox.CheckedChanged += new System.EventHandler(this.matchVariableNamesCheckBox_CheckedChanged);
       // 
-      // graphControlsGroupBox
-      // 
-      this.graphControlsGroupBox.Controls.Add(this.lockGenealogyCheckBox);
-      this.graphControlsGroupBox.Controls.Add(this.highlightAllButton);
-      this.graphControlsGroupBox.Controls.Add(this.simpleLineagesCheckBox);
-      this.graphControlsGroupBox.Controls.Add(this.selectModeButton);
-      this.graphControlsGroupBox.Controls.Add(this.moveModeButton);
-      this.graphControlsGroupBox.Controls.Add(this.zoomModeButton);
-      this.graphControlsGroupBox.Location = new System.Drawing.Point(1, -2);
-      this.graphControlsGroupBox.Name = "graphControlsGroupBox";
-      this.graphControlsGroupBox.Size = new System.Drawing.Size(202, 44);
-      this.graphControlsGroupBox.TabIndex = 11;
-      this.graphControlsGroupBox.TabStop = false;
-      this.graphControlsGroupBox.Text = "Graph controls";
-      // 
-      // lockGenealogyCheckBox
-      // 
-      this.lockGenealogyCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
-      this.lockGenealogyCheckBox.Location = new System.Drawing.Point(156, 14);
-      this.lockGenealogyCheckBox.Name = "lockGenealogyCheckBox";
-      this.lockGenealogyCheckBox.Size = new System.Drawing.Size(24, 24);
-      this.lockGenealogyCheckBox.TabIndex = 17;
-      this.toolTip.SetToolTip(this.lockGenealogyCheckBox, "Lock genealogy");
-      this.lockGenealogyCheckBox.UseVisualStyleBackColor = true;
-      this.lockGenealogyCheckBox.CheckedChanged += new System.EventHandler(this.lockGenealogyCheckBox_CheckedChanged);
-      // 
-      // highlightAllButton
-      // 
-      this.highlightAllButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
-      this.highlightAllButton.Location = new System.Drawing.Point(96, 14);
-      this.highlightAllButton.Name = "highlightAllButton";
-      this.highlightAllButton.Size = new System.Drawing.Size(24, 24);
-      this.highlightAllButton.TabIndex = 13;
-      this.toolTip.SetToolTip(this.highlightAllButton, "Fitness gradient");
-      this.highlightAllButton.UseVisualStyleBackColor = true;
-      this.highlightAllButton.Click += new System.EventHandler(this.highlightAllButton_Click);
-      // 
-      // simpleLineagesCheckBox
-      // 
-      this.simpleLineagesCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
-      this.simpleLineagesCheckBox.Location = new System.Drawing.Point(126, 14);
-      this.simpleLineagesCheckBox.Name = "simpleLineagesCheckBox";
-      this.simpleLineagesCheckBox.Size = new System.Drawing.Size(24, 24);
-      this.simpleLineagesCheckBox.TabIndex = 12;
-      this.toolTip.SetToolTip(this.simpleLineagesCheckBox, "Simple lineages");
-      this.simpleLineagesCheckBox.UseVisualStyleBackColor = true;
-      this.simpleLineagesCheckBox.CheckedChanged += new System.EventHandler(this.simpleLineagesCheckBox_CheckedChanged);
-      // 
-      // selectModeButton
-      // 
-      this.selectModeButton.Appearance = System.Windows.Forms.Appearance.Button;
-      this.selectModeButton.Location = new System.Drawing.Point(66, 14);
-      this.selectModeButton.Name = "selectModeButton";
-      this.selectModeButton.Size = new System.Drawing.Size(24, 24);
-      this.selectModeButton.TabIndex = 16;
-      this.selectModeButton.TabStop = true;
-      this.toolTip.SetToolTip(this.selectModeButton, "Select");
-      this.selectModeButton.UseVisualStyleBackColor = true;
-      this.selectModeButton.CheckedChanged += new System.EventHandler(this.selectModeButton_CheckedChanged);
-      // 
-      // moveModeButton
-      // 
-      this.moveModeButton.Appearance = System.Windows.Forms.Appearance.Button;
-      this.moveModeButton.Location = new System.Drawing.Point(6, 14);
-      this.moveModeButton.Name = "moveModeButton";
-      this.moveModeButton.Size = new System.Drawing.Size(24, 24);
-      this.moveModeButton.TabIndex = 14;
-      this.moveModeButton.TabStop = true;
-      this.toolTip.SetToolTip(this.moveModeButton, "Move");
-      this.moveModeButton.UseVisualStyleBackColor = true;
-      this.moveModeButton.CheckedChanged += new System.EventHandler(this.moveModeButton_CheckedChanged);
-      // 
-      // zoomModeButton
-      // 
-      this.zoomModeButton.Appearance = System.Windows.Forms.Appearance.Button;
-      this.zoomModeButton.Location = new System.Drawing.Point(36, 14);
-      this.zoomModeButton.Name = "zoomModeButton";
-      this.zoomModeButton.Size = new System.Drawing.Size(24, 24);
-      this.zoomModeButton.TabIndex = 15;
-      this.zoomModeButton.TabStop = true;
-      this.toolTip.SetToolTip(this.zoomModeButton, "Zoom");
-      this.zoomModeButton.UseVisualStyleBackColor = true;
-      this.zoomModeButton.CheckedChanged += new System.EventHandler(this.zoomModeButton_CheckedChanged);
+      // genealogyGraphChart
+      // 
+      this.genealogyGraphChart.BackColor = System.Drawing.SystemColors.Control;
+      this.genealogyGraphChart.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.genealogyGraphChart.Location = new System.Drawing.Point(0, 0);
+      this.genealogyGraphChart.LockGenealogy = false;
+      this.genealogyGraphChart.Name = "genealogyGraphChart";
+      this.genealogyGraphChart.ScaleOnResize = true;
+      this.genealogyGraphChart.SimpleLineages = false;
+      this.genealogyGraphChart.Size = new System.Drawing.Size(486, 720);
+      this.genealogyGraphChart.TabIndex = 2;
       // 
       // GenealogyGraphView
@@ -251,4 +208,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.groupBox1);
       this.Controls.Add(this.splitContainer);
       this.Controls.Add(this.topControlBox);
@@ -260,7 +218,7 @@
       this.splitContainer.ResumeLayout(false);
       this.topControlBox.ResumeLayout(false);
+      this.graphControlsGroupBox.ResumeLayout(false);
       this.groupBox1.ResumeLayout(false);
       this.groupBox1.PerformLayout();
-      this.graphControlsGroupBox.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -282,7 +240,4 @@
     private System.Windows.Forms.Button highlightAllButton;
     private System.Windows.Forms.CheckBox simpleLineagesCheckBox;
-    private System.Windows.Forms.RadioButton selectModeButton;
-    private System.Windows.Forms.RadioButton moveModeButton;
-    private System.Windows.Forms.RadioButton zoomModeButton;
     private System.Windows.Forms.CheckBox lockGenealogyCheckBox;
 
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphView.cs
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphView.cs	(revision 9420)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphView.cs	(revision 9835)
@@ -30,5 +30,4 @@
 using HeuristicLab.MainForm;
 using HeuristicLab.Problems.DataAnalysis.Symbolic;
-using HeuristicLab.Visualization;
 
 namespace HeuristicLab.EvolutionaryTracking.Views {
@@ -49,7 +48,4 @@
       InitializeComponent();
       // set button icons here because if set in the designer file, they get overwritten
-      this.moveModeButton.Image = Common.Resources.VSImageLibrary.Pointer;
-      this.zoomModeButton.Image = Common.Resources.VSImageLibrary.Zoom;
-      this.selectModeButton.Image = Common.Resources.VSImageLibrary.Object;
       this.highlightAllButton.Image = Common.Resources.VSImageLibrary.Gradient;
       this.simpleLineagesCheckBox.Image = Common.Resources.VSImageLibrary.ArrowDown;
@@ -111,4 +107,5 @@
       var genealogyGraphNode = visualGenealogyGraphNode.Data;
       symbolicExpressionTreeChart.Tree = genealogyGraphNode.SymbolicExpressionTree;
+
       if (genealogyGraphNode.InEdges == null) return;
       var arc = genealogyGraphNode.InEdges.Last(x => x.Source != x.Target);
@@ -121,19 +118,4 @@
       }
       symbolicExpressionTreeChart.Repaint();
-    }
-
-    private void moveModeButton_CheckedChanged(object sender, EventArgs e) {
-      var btn = (RadioButton)sender;
-      if (btn.Checked) { genealogyGraphChart.Chart.Mode = ChartMode.Move; }
-    }
-
-    private void zoomModeButton_CheckedChanged(object sender, EventArgs e) {
-      var btn = (RadioButton)sender;
-      if (btn.Checked) { genealogyGraphChart.Chart.Mode = ChartMode.Zoom; }
-    }
-
-    private void selectModeButton_CheckedChanged(object sender, EventArgs e) {
-      var btn = (RadioButton)sender;
-      if (btn.Checked) { genealogyGraphChart.Chart.Mode = ChartMode.Select; }
     }
 
@@ -191,5 +173,5 @@
       genealogyGraphChart.Chart.UpdateEnabled = false;
       genealogyGraphChart.ClearAllNodes(); // clear node colors
-      var fragment = new Fragment(clonedNodes[selectedVisualSymbExprTreeNode.SymbolicExpressionTreeNode]);
+      var fragment = new Fragment { Root = clonedNodes[selectedVisualSymbExprTreeNode.SymbolicExpressionTreeNode] };
       var fragmentLength = fragment.Length;
       // highlight nodes
@@ -247,4 +229,14 @@
       genealogyGraphChart.LockGenealogy = lockGenealogyCheckBox.Checked;
     }
+
+    private void highlightRootParentsButton_Click(object sender, EventArgs e) {
+      var nodes = genealogyGraphChart.Graph.Nodes.Where(n => n.InEdges != null && n.InEdges.Count == 2).Select(n => (SymbolicExpressionGenealogyGraphNode)n.InEdges[0].Source).ToList();
+      genealogyGraphChart.HighlightNodes(nodes);
+    }
+
+    private void highlightSecondaryParentsButton_Click(object sender, EventArgs e) {
+      var nodes = genealogyGraphChart.Graph.Nodes.Where(n => n.InEdges != null && n.InEdges.Count == 2).Select(n => (SymbolicExpressionGenealogyGraphNode)n.InEdges[1].Source).ToList();
+      genealogyGraphChart.HighlightNodes(nodes);
+    }
   }
 }
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/HeuristicLab.EvolutionaryTracking.Views-3.4.csproj
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/HeuristicLab.EvolutionaryTracking.Views-3.4.csproj	(revision 9420)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/HeuristicLab.EvolutionaryTracking.Views-3.4.csproj	(revision 9835)
@@ -71,9 +71,4 @@
       <Private>False</Private>
     </Reference>
-    <Reference Include="HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
-      <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.dll</HintPath>
-      <Private>False</Private>
-    </Reference>
     <Reference Include="HeuristicLab.MainForm-3.3">
       <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
@@ -138,4 +133,10 @@
       <DependentUpon>GenealogyGraphView.cs</DependentUpon>
     </Compile>
+    <Compile Include="Karyogram.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Karyogram.Designer.cs">
+      <DependentUpon>Karyogram.cs</DependentUpon>
+    </Compile>
     <Compile Include="LineageExplorerView.cs">
       <SubType>UserControl</SubType>
@@ -156,4 +157,9 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views\3.4\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4.csproj">
+      <Project>{423bd94f-963a-438e-ba45-3bb3d61cd03b}</Project>
+      <Name>HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views-3.4</Name>
+      <Private>False</Private>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding\3.4\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.csproj">
       <Project>{06d4a186-9319-48a0-bade-a2058d462eea}</Project>
@@ -178,7 +184,4 @@
     <EmbeddedResource Include="FrequentFragmentsDialog.resx">
       <DependentUpon>FrequentFragmentsDialog.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="GenealogyGraphChart.resx">
-      <DependentUpon>GenealogyGraphChart.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="GenealogyGraphDialog.resx">
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/LineageExplorerView.Designer.cs
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/LineageExplorerView.Designer.cs	(revision 9420)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/LineageExplorerView.Designer.cs	(revision 9835)
@@ -25,15 +25,16 @@
     private void InitializeComponent() {
       this.components = new System.ComponentModel.Container();
-      this.tabControl1 = new System.Windows.Forms.TabControl();
+      this.karyographTab = new System.Windows.Forms.TabControl();
       this.tabPage1 = new System.Windows.Forms.TabPage();
-      this.tabPage2 = new System.Windows.Forms.TabPage();
       this.panel1 = new System.Windows.Forms.Panel();
       this.qualityImprovementTreeView = new System.Windows.Forms.TreeView();
       this.symbolicExpressionTreeChart = new HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views.SymbolicExpressionTreeChart();
       this.scopeListTreeView = new System.Windows.Forms.TreeView();
+      this.panel2 = new System.Windows.Forms.Panel();
+      this.button1 = new System.Windows.Forms.Button();
+      this.showGenealogyButton = new System.Windows.Forms.Button();
       this.calculateFragmentFrequencyButton = new System.Windows.Forms.Button();
-      this.showGenealogyButton = new System.Windows.Forms.Button();
-      this.button1 = new System.Windows.Forms.Button();
-      this.panel2 = new System.Windows.Forms.Panel();
+      this.tabPage2 = new System.Windows.Forms.TabPage();
+      this.panel4 = new System.Windows.Forms.Panel();
       this.panel3 = new System.Windows.Forms.Panel();
       this.showFrequentFragmentsButton = new System.Windows.Forms.Button();
@@ -42,23 +43,26 @@
       this.bestNTextBox = new System.Windows.Forms.TextBox();
       this.consideredTrees = new System.Windows.Forms.Label();
-      this.panel4 = new System.Windows.Forms.Panel();
-      this.tabControl1.SuspendLayout();
+      this.tabPage3 = new System.Windows.Forms.TabPage();
+      this.karyograph1 = new HeuristicLab.EvolutionaryTracking.Views.Karyogram();
+      this.karyographTab.SuspendLayout();
       this.tabPage1.SuspendLayout();
-      this.tabPage2.SuspendLayout();
       this.panel1.SuspendLayout();
       this.panel2.SuspendLayout();
+      this.tabPage2.SuspendLayout();
       this.panel3.SuspendLayout();
+      this.tabPage3.SuspendLayout();
       this.SuspendLayout();
       // 
-      // tabControl1
-      // 
-      this.tabControl1.Controls.Add(this.tabPage1);
-      this.tabControl1.Controls.Add(this.tabPage2);
-      this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tabControl1.Location = new System.Drawing.Point(0, 0);
-      this.tabControl1.Name = "tabControl1";
-      this.tabControl1.SelectedIndex = 0;
-      this.tabControl1.Size = new System.Drawing.Size(1016, 669);
-      this.tabControl1.TabIndex = 2;
+      // karyographTab
+      // 
+      this.karyographTab.Controls.Add(this.tabPage1);
+      this.karyographTab.Controls.Add(this.tabPage2);
+      this.karyographTab.Controls.Add(this.tabPage3);
+      this.karyographTab.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.karyographTab.Location = new System.Drawing.Point(0, 0);
+      this.karyographTab.Name = "karyographTab";
+      this.karyographTab.SelectedIndex = 0;
+      this.karyographTab.Size = new System.Drawing.Size(1016, 669);
+      this.karyographTab.TabIndex = 2;
       // 
       // tabPage1
@@ -73,16 +77,4 @@
       this.tabPage1.Text = "Lineages";
       this.tabPage1.UseVisualStyleBackColor = true;
-      // 
-      // tabPage2
-      // 
-      this.tabPage2.Controls.Add(this.panel4);
-      this.tabPage2.Controls.Add(this.panel3);
-      this.tabPage2.Location = new System.Drawing.Point(4, 22);
-      this.tabPage2.Name = "tabPage2";
-      this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPage2.Size = new System.Drawing.Size(1008, 643);
-      this.tabPage2.TabIndex = 1;
-      this.tabPage2.Text = "Fragments";
-      this.tabPage2.UseVisualStyleBackColor = true;
       // 
       // panel1
@@ -134,4 +126,37 @@
       this.scopeListTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.scopeListTreeView_AfterSelect);
       // 
+      // panel2
+      // 
+      this.panel2.Controls.Add(this.button1);
+      this.panel2.Controls.Add(this.showGenealogyButton);
+      this.panel2.Controls.Add(this.calculateFragmentFrequencyButton);
+      this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
+      this.panel2.Location = new System.Drawing.Point(3, 3);
+      this.panel2.Name = "panel2";
+      this.panel2.Size = new System.Drawing.Size(1002, 33);
+      this.panel2.TabIndex = 1;
+      // 
+      // button1
+      // 
+      this.button1.AutoSize = true;
+      this.button1.Location = new System.Drawing.Point(239, 4);
+      this.button1.Name = "button1";
+      this.button1.Size = new System.Drawing.Size(135, 23);
+      this.button1.TabIndex = 2;
+      this.button1.Text = "Show frequent fragments";
+      this.button1.UseVisualStyleBackColor = true;
+      this.button1.Click += new System.EventHandler(this.button1_Click);
+      // 
+      // showGenealogyButton
+      // 
+      this.showGenealogyButton.AutoSize = true;
+      this.showGenealogyButton.Location = new System.Drawing.Point(129, 4);
+      this.showGenealogyButton.Name = "showGenealogyButton";
+      this.showGenealogyButton.Size = new System.Drawing.Size(104, 23);
+      this.showGenealogyButton.TabIndex = 1;
+      this.showGenealogyButton.Text = "Show genealogy";
+      this.showGenealogyButton.UseVisualStyleBackColor = true;
+      this.showGenealogyButton.Click += new System.EventHandler(this.showGenealogyButton_Click);
+      // 
       // calculateFragmentFrequencyButton
       // 
@@ -145,36 +170,23 @@
       this.calculateFragmentFrequencyButton.Click += new System.EventHandler(this.calculateFragmentFrequencyButton_Click);
       // 
-      // showGenealogyButton
-      // 
-      this.showGenealogyButton.AutoSize = true;
-      this.showGenealogyButton.Location = new System.Drawing.Point(129, 4);
-      this.showGenealogyButton.Name = "showGenealogyButton";
-      this.showGenealogyButton.Size = new System.Drawing.Size(104, 23);
-      this.showGenealogyButton.TabIndex = 1;
-      this.showGenealogyButton.Text = "Show genealogy";
-      this.showGenealogyButton.UseVisualStyleBackColor = true;
-      this.showGenealogyButton.Click += new System.EventHandler(this.showGenealogyButton_Click);
-      // 
-      // button1
-      // 
-      this.button1.AutoSize = true;
-      this.button1.Location = new System.Drawing.Point(239, 4);
-      this.button1.Name = "button1";
-      this.button1.Size = new System.Drawing.Size(135, 23);
-      this.button1.TabIndex = 2;
-      this.button1.Text = "Show frequent fragments";
-      this.button1.UseVisualStyleBackColor = true;
-      this.button1.Click += new System.EventHandler(this.button1_Click);
-      // 
-      // panel2
-      // 
-      this.panel2.Controls.Add(this.button1);
-      this.panel2.Controls.Add(this.showGenealogyButton);
-      this.panel2.Controls.Add(this.calculateFragmentFrequencyButton);
-      this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
-      this.panel2.Location = new System.Drawing.Point(3, 3);
-      this.panel2.Name = "panel2";
-      this.panel2.Size = new System.Drawing.Size(1002, 33);
-      this.panel2.TabIndex = 1;
+      // tabPage2
+      // 
+      this.tabPage2.Controls.Add(this.panel4);
+      this.tabPage2.Controls.Add(this.panel3);
+      this.tabPage2.Location = new System.Drawing.Point(4, 22);
+      this.tabPage2.Name = "tabPage2";
+      this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPage2.Size = new System.Drawing.Size(1008, 643);
+      this.tabPage2.TabIndex = 1;
+      this.tabPage2.Text = "Fragments";
+      this.tabPage2.UseVisualStyleBackColor = true;
+      // 
+      // panel4
+      // 
+      this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.panel4.Location = new System.Drawing.Point(3, 33);
+      this.panel4.Name = "panel4";
+      this.panel4.Size = new System.Drawing.Size(1002, 607);
+      this.panel4.TabIndex = 1;
       // 
       // panel3
@@ -236,11 +248,25 @@
       this.consideredTrees.Text = "Best n trees";
       // 
-      // panel4
-      // 
-      this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.panel4.Location = new System.Drawing.Point(3, 33);
-      this.panel4.Name = "panel4";
-      this.panel4.Size = new System.Drawing.Size(1002, 607);
-      this.panel4.TabIndex = 1;
+      // tabPage3
+      // 
+      this.tabPage3.Controls.Add(this.karyograph1);
+      this.tabPage3.Location = new System.Drawing.Point(4, 22);
+      this.tabPage3.Name = "tabPage3";
+      this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPage3.Size = new System.Drawing.Size(1008, 643);
+      this.tabPage3.TabIndex = 2;
+      this.tabPage3.Text = "Karyograph";
+      this.tabPage3.UseVisualStyleBackColor = true;
+      // 
+      // karyograph1
+      // 
+      this.karyograph1.BackColor = System.Drawing.SystemColors.Control;
+      this.karyograph1.Chart = null;
+      this.karyograph1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.karyograph1.Location = new System.Drawing.Point(3, 3);
+      this.karyograph1.Name = "karyograph1";
+      this.karyograph1.ScaleOnResize = true;
+      this.karyograph1.Size = new System.Drawing.Size(1002, 637);
+      this.karyograph1.TabIndex = 0;
       // 
       // LineageExplorerView
@@ -248,15 +274,16 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tabControl1);
+      this.Controls.Add(this.karyographTab);
       this.Name = "LineageExplorerView";
       this.Size = new System.Drawing.Size(1016, 669);
-      this.tabControl1.ResumeLayout(false);
+      this.karyographTab.ResumeLayout(false);
       this.tabPage1.ResumeLayout(false);
-      this.tabPage2.ResumeLayout(false);
       this.panel1.ResumeLayout(false);
       this.panel2.ResumeLayout(false);
       this.panel2.PerformLayout();
+      this.tabPage2.ResumeLayout(false);
       this.panel3.ResumeLayout(false);
       this.panel3.PerformLayout();
+      this.tabPage3.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -265,5 +292,5 @@
     #endregion
 
-    private System.Windows.Forms.TabControl tabControl1;
+    private System.Windows.Forms.TabControl karyographTab;
     private System.Windows.Forms.TabPage tabPage1;
     private System.Windows.Forms.Panel panel1;
@@ -283,4 +310,6 @@
     private System.Windows.Forms.Label consideredTrees;
     private System.Windows.Forms.Panel panel4;
+    private System.Windows.Forms.TabPage tabPage3;
+    private Karyogram karyograph1;
 
 
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/LineageExplorerView.cs
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/LineageExplorerView.cs	(revision 9420)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/LineageExplorerView.cs	(revision 9835)
@@ -59,4 +59,6 @@
         }
       }
+
+      karyograph1.Trees = Content.Trees.OrderByDescending(x => x.Item2).Select(x => x.Item1).ToList();
     }
 
@@ -155,5 +157,5 @@
       var trees = Content.GenealogyGraph.Nodes.Where(x => x.Rank.IsAlmost(graphNode.Rank)).Select(x => x.SymbolicExpressionTree).ToList();
 
-      var fragments = graphNode.SymbolicExpressionTree.IterateNodesBreadth().Select(n => new Fragment(n));
+      var fragments = graphNode.SymbolicExpressionTree.IterateNodesBreadth().Select(n => new Fragment { Root = n });
 
       var similarityComparer = new SymbolicExpressionTreeNodeSimilarityComparer {
@@ -241,5 +243,5 @@
       };
 
-      var fragments = bestTrees.SelectMany(t => t.IterateNodesBreadth()).Where(n => n.GetLength() >= 3).Distinct(similarityComparer).Select(n => new Fragment(n));
+      var fragments = bestTrees.SelectMany(t => t.IterateNodesBreadth()).Where(n => n.GetLength() >= 3).Distinct(similarityComparer).Select(n => new Fragment { Root = n });
 
       double bestNQuality = tuples.Take(bestN).Sum(x => x.Quality); // average quality of best N individuals in the population
Index: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/Plugin.cs
===================================================================
--- branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/Plugin.cs	(revision 9420)
+++ branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/Plugin.cs	(revision 9835)
@@ -27,4 +27,6 @@
   [PluginDependency("HeuristicLab.Core", "3.3")]
   [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
   [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.4")]
   [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views", "3.4")]
