Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChart.Designer.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChart.Designer.cs	(revision 13788)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChart.Designer.cs	(revision 13789)
@@ -32,5 +32,5 @@
       // pictureBox
       // 
-      this.pictureBox.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox.Image")));
+      //this.pictureBox.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox.Image")));
       // 
       // toolTip
Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChart.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChart.cs	(revision 13788)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChart.cs	(revision 13789)
@@ -83,4 +83,5 @@
       this.AddChartModes(directedGraphChartMode, new PanChartMode(this), new ZoomInChartMode(this), new ZoomOutChartMode(this));
       shapes = new Dictionary<Type, LabeledPrimitive>();
+      SmoothingMode = SmoothingMode.HighQuality; // set antialiasing for nicer rendering
     }
 
@@ -110,4 +111,5 @@
       foreach (var v in graph.Vertices) {
         var shape = CreateShape(v);
+        shape.ToolTipText = v.Label;
         vertexMap[shape] = v;
         vertexShapes[v] = shape;
@@ -152,6 +154,8 @@
         var len = points.Length; // len = 2 when no edge routingMode is performed
         Pen pen;
+        var penWidth = weight / max * 2;
         if (len == 2) {
-          pen = new Pen(Color.Black, (float)(weight / max * 3f)) { CustomEndCap = new AdjustableArrowCap(5, 3) };
+          if (double.IsInfinity(penWidth) || double.IsNaN(penWidth)) penWidth = 1;
+          pen = new Pen(Color.Black, (float)penWidth) { CustomEndCap = new AdjustableArrowCap(5, 3) };
           var start = points[0];
           var end = points[1];
@@ -168,5 +172,5 @@
           if (intersectionPoint == default(PointD))
             intersectionPoint = end;
-          line = new Line(Chart, new PointD(start.X, start.Y), intersectionPoint, pen);
+          line = new Line(Chart, new PointD(start.X, start.Y), intersectionPoint, pen) { ToolTipText = arc.Label };
           Chart.Group.Add(line);
           arcShapes[arc] = line;
@@ -193,10 +197,10 @@
             if (intersectionPoints.Any()) {
               endPoint = intersectionPoints.First();
-              pen = new Pen(Color.Black, (float)(weight / max * 3f)) { CustomEndCap = new AdjustableArrowCap(5, 3) };
+              pen = new Pen(Color.Black, (float)penWidth) { CustomEndCap = new AdjustableArrowCap(5, 3) };
             } else {
               endPoint = end;
-              pen = new Pen(Color.Black, (float)(weight / max * 3f));
+              pen = new Pen(Color.Black, (float)penWidth);
             }
-            line = new Line(Chart, new PointD(start.X, start.Y), endPoint, pen);
+            line = new Line(Chart, new PointD(start.X, start.Y), endPoint, pen) { ToolTipText = arc.Label };
             Chart.Group.Add(line);
             if (intersectionPoints.Any()) {
Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChartMode.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChartMode.cs	(revision 13788)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/DirectedGraphChartMode.cs	(revision 13789)
@@ -25,5 +25,4 @@
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
-using HeuristicLab.Problems.DataAnalysis;
 using HeuristicLab.Visualization;
 
@@ -56,8 +55,10 @@
                 }
               }
-            } finally { chartControl.ResumeRendering(); }
+            }
+            finally { chartControl.ResumeRendering(); }
             break;
         }
-      } finally {
+      }
+      finally {
         base.HandleOnMouseDown(sender, e);
       }
@@ -67,21 +68,4 @@
       try {
         switch (e.Button) {
-          case MouseButtons.None:
-            try {
-              chartControl.SuspendRendering();
-              var sp = chartControl.Chart.GetPrimitive(e.Location);
-              if (sp is RectangularPrimitiveBase) {
-                var vertex = Control.GetVertex(sp) as IVertex<IDeepCloneable>;
-                var junctionNode = vertex as JunctionNetworkNode;
-                if (junctionNode != null) {
-                  var solution = vertex.Data as IRegressionSolution;
-                  if (solution != null) {
-                    var toolTip = string.Format("Target: {0}\nQuality: {1}", solution.ProblemData.TargetVariable, solution.TrainingRSquared);
-                    Control.ToolTip.SetToolTip(Control, toolTip);
-                  }
-                }
-              }
-            } finally { chartControl.ResumeRendering(); }
-            break;
           case MouseButtons.Left:
             var previousWorldLocation = chartControl.Chart.TransformPixelToWorld(previousLocation);
@@ -119,9 +103,10 @@
                 }
               }
-            } finally { chartControl.ResumeRendering(); }
+            }
+            finally { chartControl.ResumeRendering(); }
             break;
         }
-      } finally {
-        chartControl.UpdatePicture();
+      }
+      finally {
         base.HandleOnMouseMove(sender, e);
       }
Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.Designer.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.Designer.cs	(revision 13788)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.Designer.cs	(revision 13789)
@@ -50,5 +50,5 @@
       // settingsGroupBox
       // 
-      this.settingsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+      this.settingsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
             | System.Windows.Forms.AnchorStyles.Left)));
       this.settingsGroupBox.Controls.Add(this.onlineImpactCalculationButton);
@@ -169,5 +169,5 @@
       // layoutOptionsGroupBox
       // 
-      this.layoutOptionsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+      this.layoutOptionsGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
             | System.Windows.Forms.AnchorStyles.Left)));
       this.layoutOptionsGroupBox.Controls.Add(this.idealEdgeLengthTextBox);
@@ -230,6 +230,6 @@
       // graphChart
       // 
-      this.graphChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
+      this.graphChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+            | System.Windows.Forms.AnchorStyles.Left)
             | System.Windows.Forms.AnchorStyles.Right)));
       this.graphChart.BackColor = System.Drawing.SystemColors.Control;
Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.cs
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.cs	(revision 13788)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks.Views/3.3/RunCollectionVariableInteractionNetworkView.cs	(revision 13789)
@@ -233,7 +233,9 @@
           IVertex junctionNode;
           if (!nodes.TryGetValue(junctionLabel, out junctionNode)) {
-            junctionNode = new JunctionNetworkNode { Label = string.Empty, Data = CreateEnsembleSolution(targetRuns) };
+            var solutionsEnsemble = CreateEnsembleSolution(targetRuns);
+            junctionNode = new JunctionNetworkNode { Label = string.Empty, Data = solutionsEnsemble };
             vn.AddVertex(junctionNode);
             nodes[junctionLabel] = junctionNode;
+            junctionNode.Label = string.Format("Target quality: {0:0.000}", solutionsEnsemble.TrainingRSquared);
           }
           IArc arc;
@@ -245,8 +247,9 @@
               nodes[v] = variableNode;
             }
-            arc = new Arc(variableNode, junctionNode) { Weight = impact };
+            arc = new Arc(variableNode, junctionNode) { Weight = impact, Label = string.Format("Impact: {0:0.000}", impact) };
             vn.AddArc(arc);
           }
-          arc = new Arc(junctionNode, targetNode) { Weight = junctionNode.InArcs.Sum(x => x.Weight) };
+          var trainingR2 = ((IRegressionSolution)((JunctionNetworkNode)junctionNode).Data).TrainingRSquared;
+          arc = new Arc(junctionNode, targetNode) { Weight = junctionNode.InArcs.Sum(x => x.Weight), Label = string.Format("Quality: {0:0.000}", trainingR2) };
           vn.AddArc(arc);
         } else {
@@ -258,5 +261,5 @@
               nodes[v] = variableNode;
             }
-            var arc = new Arc(variableNode, targetNode) { Weight = impact };
+            var arc = new Arc(variableNode, targetNode) { Weight = impact, Label = string.Format("Impact: {0:0.000}", impact) };
             vn.AddArc(arc);
           }
@@ -380,11 +383,8 @@
       var filteredNetwork = new VariableInteractionNetwork();
       var cloner = new Cloner();
-      var vertices = arcs.SelectMany(x => new[] { x.Source, x.Target }).Select(cloner.Clone); // arcs are not cloned
+      var vertices = arcs.SelectMany(x => new[] { x.Source, x.Target }).Select(cloner.Clone).Distinct(); // arcs are not cloned
       filteredNetwork.AddVertices(vertices);
-      foreach (var arc in arcs) {
-        var source = cloner.Clone(arc.Source);
-        var target = cloner.Clone(arc.Target);
-        filteredNetwork.AddArc(source, target);
-      }
+      filteredNetwork.AddArcs(arcs.Select(x => (IArc)x.Clone(cloner)));
+
       var unusedJunctions = filteredNetwork.Vertices.Where(x => x.InDegree == 0 && x is JunctionNetworkNode).ToList();
       filteredNetwork.RemoveVertices(unusedJunctions);
@@ -443,7 +443,7 @@
         button.Enabled = false;
         var impacts = CalculateVariableImpactsOnline(Content, false);
-        var network = CreateNetwork(impacts);
+        variableInteractionNetwork = CreateNetwork(impacts);
         var threshold = double.Parse(impactThresholdTextBox.Text);
-        graphChart.Graph = ApplyThreshold(network, threshold);
+        graphChart.Graph = ApplyThreshold(variableInteractionNetwork, threshold);
       };
       worker.RunWorkerCompleted += (o, e) => button.Enabled = true;
Index: branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks/3.3/HeuristicLab.VariableInteractionNetworks-3.3.csproj
===================================================================
--- branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks/3.3/HeuristicLab.VariableInteractionNetworks-3.3.csproj	(revision 13788)
+++ branches/HeuristicLab.VariableInteractionNetworks/HeuristicLab.VariableInteractionNetworks/3.3/HeuristicLab.VariableInteractionNetworks-3.3.csproj	(revision 13789)
@@ -166,4 +166,5 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="SymbolicDataAnalysisVariableImpactsAnalyzer.cs" />
+    <Compile Include="TinySet.cs" />
     <Compile Include="VariableInteractionNetwork.cs" />
   </ItemGroup>
