Index: /trunk/sources/HeuristicLab.Visualization.Test/3.2/LineChartTests.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization.Test/3.2/LineChartTests.cs	(revision 1606)
+++ /trunk/sources/HeuristicLab.Visualization.Test/3.2/LineChartTests.cs	(revision 1607)
@@ -37,5 +37,5 @@
       row2.Style = DrawingStyle.Solid;
       row3.Style = DrawingStyle.Dashed;
-      
+
 
       model.AddDataRow(row1);
@@ -63,12 +63,12 @@
 
       for (int i = 0; i < 10000; i++) {
-        row1.AddValue(rand.NextDouble()*10);
-        row2.AddValue(rand.NextDouble()*10);
-        row3.AddValue(rand.NextDouble()*10);
-      }
-
-      f.ShowDialog();
-    }
-      
+        row1.AddValue(rand.NextDouble() * 10);
+        row2.AddValue(rand.NextDouble() * 10);
+        row3.AddValue(rand.NextDouble() * 10);
+      }
+
+      f.ShowDialog();
+    }
+
     [Test]
     public void TestAxes() {
@@ -119,13 +119,13 @@
 
       for (int i = 0; i < 10; i++) {
-        row1.AddValue(rand.NextDouble()*10);
-        row2.AddValue(rand.NextDouble()*10);
-        row3.AddValue(rand.NextDouble()*1);
+        row1.AddValue(rand.NextDouble() * 10);
+        row2.AddValue(rand.NextDouble() * 10);
+        row3.AddValue(rand.NextDouble() * 1);
       }
 
       f.AddValue += delegate {
-        row1.AddValue(rand.NextDouble()*10);
-        row2.AddValue(rand.NextDouble()*10);
-        row3.AddValue(rand.NextDouble()*1);
+        row1.AddValue(rand.NextDouble() * 10);
+        row2.AddValue(rand.NextDouble() * 10);
+        row3.AddValue(rand.NextDouble() * 1);
       };
 
@@ -134,39 +134,22 @@
 
     [Test]
-    public void TestAggregator() {
-      LineChartTestForm f = new LineChartTestForm(model);
-
-      IDataRow row1 = new DataRow();
-      row1.Label = "row";
-      row1.Color = Color.Red;
-      row1.Thickness = 3;
-      row1.Style = DrawingStyle.Solid;
+    public void SimpleTestAggregator() {
+      LineChartTestForm f = new LineChartTestForm(model);
+
+      IDataRow row1 = new DataRow { Label = "row", Color = Color.Red, Thickness = 3, Style = DrawingStyle.Solid };
 
       model.AddDataRow(row1);
 
 
-      MinAggregator aggregator = new MinAggregator();
-      aggregator.Label = "MinAggregator";
-      aggregator.Color = Color.Pink;
-      aggregator.Thickness = 5;
-      aggregator.Style = DrawingStyle.Solid;
-      aggregator.AddValue(2);
-      aggregator.LineType = DataRowType.SingleValue;
-
-      IDataRow lineTest = new DataRow("testline");
-      lineTest.Color = Color.DarkSalmon;
-      lineTest.Thickness = 2;
-      lineTest.Style = DrawingStyle.Dashed;
-      lineTest.LineType = DataRowType.SingleValue;
-      model.AddDataRow(lineTest);
-      lineTest.AddValue(9);
-      lineTest.AddValue(2);
-      lineTest.AddValue(3);
-      lineTest.AddValue(4);
-
+      MaxAggregator aggregator = new MaxAggregator {
+        Label = "MinAggregator",
+        Color = Color.Pink,
+        Thickness = 5,
+        Style = DrawingStyle.Solid,
+        LineType = DataRowType.SingleValue
+      };
       aggregator.AddWatch(row1);
 
       model.AddDataRow(aggregator);
-
 
       row1.AddValue(10);
@@ -183,161 +166,172 @@
     public class Worker {
       // This method will be called when the thread is started.
-      private ChartDataRowsModel model;
+      private readonly ChartDataRowsModel model;
+
       public Worker(ChartDataRowsModel model) {
         this.model = model;
       }
-      
+
       public void DoWorkMultiLine() {
-
-        IDataRow row1 = new DataRow();
-        row1.Color = Color.Red;
-        row1.Thickness = 2;
-        row1.Label = "Sinus";
-        row1.Style = DrawingStyle.Solid;
+        IDataRow row1 = new DataRow { Color = Color.Red, Thickness = 2, Label = "Sinus", Style = DrawingStyle.Solid, ShowMarkers = false };
         model.AddDataRow(row1);
 
-        IDataRow row2 = new DataRow();
-        row2.Color = Color.Red;
-        row2.Thickness = 3;
-        row2.Label = "Growing";
-        row2.Style = DrawingStyle.Solid;
+        IDataRow row2 = new DataRow { Color = Color.Red, Thickness = 3, Label = "Growing", Style = DrawingStyle.Solid, ShowMarkers = false };
         model.AddDataRow(row2);
 
-        AvgAggregator multiAvgAggregator = new AvgAggregator();
-        multiAvgAggregator.Label = "MultiAvgAggregator";
-        multiAvgAggregator.Color = Color.DarkOliveGreen;
-        multiAvgAggregator.Thickness = 3;
-        multiAvgAggregator.Style = DrawingStyle.Solid;
-        multiAvgAggregator.LineType = DataRowType.SingleValue;
+        AvgAggregator multiAvgAggregator = new AvgAggregator {
+          Label = "MultiAvgAggregator",
+          Color = Color.DarkOliveGreen,
+          Thickness = 3,
+          Style = DrawingStyle.Solid,
+          LineType = DataRowType.SingleValue,
+          ShowMarkers = false
+        };
         multiAvgAggregator.AddWatch(row1);
         multiAvgAggregator.AddWatch(row2);
         model.AddDataRow(multiAvgAggregator);
 
-        MaxAggregator multiMaxAggregator = new MaxAggregator();
-        multiMaxAggregator.Label = "MultiMaxAggregator";
-        multiMaxAggregator.Color = Color.DarkKhaki;
-        multiMaxAggregator.Thickness = 3;
-        multiMaxAggregator.Style = DrawingStyle.Solid;
-        multiMaxAggregator.LineType = DataRowType.SingleValue;
+        MaxAggregator multiMaxAggregator = new MaxAggregator {
+          Label = "MultiMaxAggregator",
+          Color = Color.DarkKhaki,
+          Thickness = 3,
+          Style = DrawingStyle.Solid,
+          LineType = DataRowType.SingleValue,
+          ShowMarkers = false
+        };
         multiMaxAggregator.AddWatch(row1);
         multiMaxAggregator.AddWatch(row2);
         model.AddDataRow(multiMaxAggregator);
 
-        MinAggregator multiMinAggregator = new MinAggregator();
-        multiMinAggregator.Label = "MultiMinAggregator";
-        multiMinAggregator.Color = Color.DarkRed;
-        multiMinAggregator.Thickness = 3;
-        multiMinAggregator.Style = DrawingStyle.Solid;
-        multiMinAggregator.LineType = DataRowType.SingleValue;
+        MinAggregator multiMinAggregator = new MinAggregator {
+          Label = "MultiMinAggregator",
+          Color = Color.DarkRed,
+          Thickness = 3,
+          Style = DrawingStyle.Solid,
+          LineType = DataRowType.SingleValue,
+          ShowMarkers = false
+        };
         multiMinAggregator.AddWatch(row1);
         multiMinAggregator.AddWatch(row2);
         model.AddDataRow(multiMinAggregator);
 
-        AvgLineAggregator multiLineAvgAggregator = new AvgLineAggregator();
-        multiLineAvgAggregator.Label = "MultiLineAvgAggregator";
-        multiLineAvgAggregator.Color = Color.Red;
-        multiLineAvgAggregator.Thickness = 4;
-        multiLineAvgAggregator.Style = DrawingStyle.Solid;
-        multiLineAvgAggregator.LineType = DataRowType.Normal;
-        multiLineAvgAggregator.AddWatch(row1);
-        multiLineAvgAggregator.AddWatch(row2);
-        multiLineAvgAggregator.AddValue(0);
-        model.AddDataRow(multiLineAvgAggregator);
+        //        AvgLineAggregator multiLineAvgAggregator = new AvgLineAggregator {
+        //                                                                           Label = "MultiLineAvgAggregator",
+        //                                                                           Color = Color.Red,
+        //                                                                           Thickness = 4,
+        //                                                                           Style = DrawingStyle.Solid,
+        //                                                                           LineType = DataRowType.Normal,
+        //                                                                           ShowMarkers = false
+        //                                                                         };
+        //        multiLineAvgAggregator.AddWatch(row1);
+        //        multiLineAvgAggregator.AddWatch(row2);
+        //        multiLineAvgAggregator.AddValue(0);
+        //        model.AddDataRow(multiLineAvgAggregator);
 
         double i = 0;
-        double newY;
-
-        Random rand = new Random();
+
+
         while (!_shouldStop && i <= 24) {
           i += 0.2;
-          newY = Math.Sin(i);
-          System.Console.WriteLine("working");
-          //row1.AddValue(rand.NextDouble() * 10);
-          row1.AddValue(newY * 10);
-          row2.AddValue(i*2-15);
-          System.Threading.Thread.Sleep(100);
-        }
-        Console.WriteLine("worker thread: terminating gracefully.");
-      }
-      public void DoWorkSingleLine() {
-
-        IDataRow row1 = new DataRow();
-        row1.Color = Color.Red;
-        row1.Thickness = 2;
-        row1.Label = "Sinus";
-        row1.Style = DrawingStyle.Solid;
-        model.AddDataRow(row1);
-
-        IDataRow row2 = new DataRow();
-        row2.Color = Color.Red;
-        row2.Thickness = 3;
-        row2.Label = "Growing";
-        row2.Style = DrawingStyle.Solid;
-        model.AddDataRow(row2);
-
-        MinAggregator aggregator = new MinAggregator();
-        aggregator.Label = "MinAggregator";
-        aggregator.Color = Color.Pink;
-        aggregator.Thickness = 3;
-        aggregator.Style = DrawingStyle.Solid;
-        aggregator.LineType = DataRowType.SingleValue;
-        aggregator.AddWatch(row1);
-        model.AddDataRow(aggregator);
-
-        MaxAggregator maxAggregator = new MaxAggregator();
-        maxAggregator.Label = "MaxAggregator";
-        maxAggregator.Color = Color.DeepSkyBlue;
-        maxAggregator.Thickness = 3;
-        maxAggregator.Style = DrawingStyle.Solid;
-        maxAggregator.LineType = DataRowType.SingleValue;
-        maxAggregator.AddWatch(row1);
-        model.AddDataRow(maxAggregator);
-
-        AvgAggregator avgAggregator = new AvgAggregator();
-        avgAggregator.Label = "AvgAggregator";
-        avgAggregator.Color = Color.Violet;
-        avgAggregator.Thickness = 3;
-        avgAggregator.Style = DrawingStyle.Solid;
-        avgAggregator.LineType = DataRowType.SingleValue;
-        avgAggregator.AddWatch(row1);
-        model.AddDataRow(avgAggregator);
-
-        double i = 0;
-        double newY;
-
-        Random rand = new Random();
-        while (!_shouldStop && i <= 24) {
-          i += 0.2;
-          newY = Math.Sin(i);
-          System.Console.WriteLine("working");
+          double newY = Math.Sin(i);
+          Console.WriteLine("working");
           //row1.AddValue(rand.NextDouble() * 10);
           row1.AddValue(newY * 10);
           row2.AddValue(i * 2 - 15);
-          System.Threading.Thread.Sleep(100);
+          Thread.Sleep(100);
         }
         Console.WriteLine("worker thread: terminating gracefully.");
       }
+
+      public void DoWorkSingleLine() {
+        IDataRow row1 = new DataRow {
+          Color = Color.Red,
+          Thickness = 2,
+          Label = "Sinus",
+          Style = DrawingStyle.Solid,
+          ShowMarkers = false
+        };
+        model.AddDataRow(row1);
+
+        IDataRow row2 = new DataRow {
+          Color = Color.Red,
+          Thickness = 3,
+          Label = "Growing",
+          Style = DrawingStyle.Solid,
+          ShowMarkers = false
+        };
+        model.AddDataRow(row2);
+
+        MinAggregator aggregator = new MinAggregator {
+          Label = "MinAggregator",
+          Color = Color.Pink,
+          Thickness = 3,
+          Style = DrawingStyle.Solid,
+          LineType = DataRowType.SingleValue
+        };
+        aggregator.AddWatch(row1);
+        model.AddDataRow(aggregator);
+
+        MaxAggregator maxAggregator = new MaxAggregator {
+          Label = "MaxAggregator",
+          Color = Color.DeepSkyBlue,
+          Thickness = 3,
+          Style = DrawingStyle.Solid,
+          LineType = DataRowType.SingleValue
+        };
+        maxAggregator.AddWatch(row1);
+        model.AddDataRow(maxAggregator);
+
+        AvgAggregator avgAggregator = new AvgAggregator {
+          Label = "AvgAggregator",
+          Color = Color.Violet,
+          Thickness = 3,
+          Style = DrawingStyle.Solid,
+          LineType = DataRowType.SingleValue
+        };
+        avgAggregator.AddWatch(row1);
+        model.AddDataRow(avgAggregator);
+
+        double i = 0;
+
+
+        while (!_shouldStop && i <= 240) {
+          i += 0.2;
+          double newY = Math.Sin(i);
+          Console.WriteLine("working");
+          //row1.AddValue(rand.NextDouble() * 10);
+          row1.AddValue(newY * 10);
+          row2.AddValue(i * 2 - 15);
+          //System.Threading.Thread.Sleep(100);
+        }
+        Console.WriteLine("worker thread: terminating gracefully.");
+      }
+
       public void DoWorkAvgLine() {
-
-        IDataRow row1 = new DataRow();
-        row1.Color = Color.Red;
-        row1.Thickness = 2;
-        row1.Label = "Sinus";
-        row1.Style = DrawingStyle.Solid;
+        IDataRow row1 = new DataRow {
+          Color = Color.Red,
+          Thickness = 2,
+          Label = "Sinus",
+          Style = DrawingStyle.Solid,
+          ShowMarkers = false
+        };
         model.AddDataRow(row1);
 
-        IDataRow row2 = new DataRow();
-        row2.Color = Color.Red;
-        row2.Thickness = 3;
-        row2.Label = "Growing";
-        row2.Style = DrawingStyle.Solid;
+        IDataRow row2 = new DataRow {
+          Color = Color.Red,
+          Thickness = 3,
+          Label = "Growing",
+          Style = DrawingStyle.Solid,
+          ShowMarkers = false
+        };
         model.AddDataRow(row2);
 
-        AvgLineAggregator avgLineAggregator = new AvgLineAggregator();
-        avgLineAggregator.Label = "AvgLineAggregator";
-        avgLineAggregator.Color = Color.Violet;
-        avgLineAggregator.Thickness = 3;
-        avgLineAggregator.Style = DrawingStyle.Solid;
-        avgLineAggregator.LineType = DataRowType.Normal;
+        AvgLineAggregator avgLineAggregator = new AvgLineAggregator {
+          Label = "AvgLineAggregator",
+          Color = Color.Violet,
+          Thickness = 3,
+          Style = DrawingStyle.Solid,
+          LineType = DataRowType.Normal,
+          ShowMarkers = false
+        };
         avgLineAggregator.AddWatch(row1);
         avgLineAggregator.AddWatch(row2);
@@ -345,21 +339,61 @@
 
         double i = 0;
-        double newY;
-
-        Random rand = new Random();
-        while (!_shouldStop && i <= 24) {
+
+        while (!_shouldStop && i <= 240) {
           i += 0.2;
-          newY = Math.Sin(i);
-          System.Console.WriteLine("working");
+          double newY = Math.Sin(i);
+          Console.WriteLine("working");
           //row1.AddValue(rand.NextDouble() * 10);
           row1.AddValue(newY * 10);
           row2.AddValue(i * 2 - 15);
-          System.Threading.Thread.Sleep(100);
+          //Thread.Sleep(100);
         }
         Console.WriteLine("worker thread: terminating gracefully.");
       }
+
+      public void DoWorkFloatingAvg() {
+        IDataRow row1 = new DataRow {
+          Color = Color.Red,
+          Thickness = 2,
+          Label = "SinusHacked",
+          Style = DrawingStyle.Solid,
+          ShowMarkers = false
+        };
+        model.AddDataRow(row1);
+
+        IDataRow row2 = new DataRow {
+          Color = Color.Red,
+          Thickness = 3,
+          Label = "GrowingHacked",
+          Style = DrawingStyle.Solid,
+          ShowMarkers = false
+        };
+        model.AddDataRow(row2);
+
+        // insert 2 floating avg line aggregators (for each hacked line)
+
+        // test floating avg aggregator without visible watcher line
+
+        double i = 0;
+        Random rnd = new Random();
+
+        while (!_shouldStop && i <= 240) {
+          i += 0.2;
+          double newY = Math.Sin(i);
+
+          double hack = rnd.NextDouble() * i / 10;
+          row1.AddValue(newY * 10 + hack);
+
+          hack = rnd.NextDouble() * i / 10;
+          row2.AddValue(i * 2 - 15 + hack);
+          //Thread.Sleep(100);
+        }
+        Console.WriteLine("worker thread: terminating gracefully.");
+      }
+
       public void RequestStop() {
         _shouldStop = true;
       }
+
       // Volatile is used as hint to the compiler that this data
       // member will be accessed by multiple threads.
@@ -386,5 +420,6 @@
     public void TestAggregatorSingleLine() {
       LineChartTestForm f = new LineChartTestForm(model);
-   
+      model.Title = "SingleLineAggregator Tests";
+
       // Create the thread object. This does not start the thread.
       Worker workerObject = new Worker(model);
@@ -397,7 +432,9 @@
       workerObject.RequestStop();
     }
+
     [Test]
     public void TestAggregatorAvgLine() {
       LineChartTestForm f = new LineChartTestForm(model);
+      model.Title = "AvgLineTest";
 
       // Create the thread object. This does not start the thread.
@@ -412,13 +449,25 @@
     }
 
-    
+    [Test]
+    public void TestFloatingAvg() {
+      LineChartTestForm f = new LineChartTestForm(model);
+      model.Title = "FloatingAvg Test";
+      model.ViewSettings.LegendPosition = Legend.LegendPosition.Top;
+
+      // Create the thread object. This does not start the thread.
+      Worker workerObject = new Worker(model);
+      Thread workerThread = new Thread(workerObject.DoWorkFloatingAvg);
+
+      // Start the worker thread.
+      workerThread.Start();
+
+      f.ShowDialog();
+      workerObject.RequestStop();
+    }
+
 
     [Test]
     public void TestAutoZoomInConstructor() {
-      IDataRow row1 = new DataRow();
-
-      row1.Color = Color.Red;
-      row1.Thickness = 3;
-      row1.Style = DrawingStyle.Solid;
+      IDataRow row1 = new DataRow { Color = Color.Red, Thickness = 3, Style = DrawingStyle.Solid };
 
       model.AddDataRow(row1);
@@ -485,5 +534,5 @@
 
       row2.AddValue(5);
-     
+
 
       row3.AddValue(2);
Index: /trunk/sources/HeuristicLab.Visualization/3.2/AvgAggregator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/AvgAggregator.cs	(revision 1606)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/AvgAggregator.cs	(revision 1607)
@@ -22,5 +22,5 @@
     #endregion
 
-    private List<IDataRow> dataRowWatches = new List<IDataRow>();
+    private readonly List<IDataRow> dataRowWatches = new List<IDataRow>();
     private double curAvgValue;
 
@@ -126,5 +126,5 @@
     }
 
-    public override void RemoveValues(int index, int count) {
+    public override void RemoveValues(int index, int countVals) {
       throw new NotSupportedException();
     }
Index: /trunk/sources/HeuristicLab.Visualization/3.2/AvgLineAggregator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/AvgLineAggregator.cs	(revision 1606)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/AvgLineAggregator.cs	(revision 1607)
@@ -6,31 +6,28 @@
 
     private readonly List<double> dataRow = new List<double>();
+    readonly List<IDataRow> dataRowWatches = new List<IDataRow>();
 
     #region IAggregator Members
 
-    public void AddWatch(IDataRow dataRow) {
-      dataRowWatches.Add(dataRow);
-      dataRow.ValueChanged += dataRow_ValueChanged;
-      dataRow.ValuesChanged += dataRow_ValuesChanged;
-      dataRow.DataRowChanged += dataRow_DataRowChanged;
+    public void AddWatch(IDataRow watchDataRow) {
+      dataRowWatches.Add(watchDataRow);
+      watchDataRow.ValueChanged += dataRow_ValueChanged;
+      watchDataRow.ValuesChanged += dataRow_ValuesChanged;
+      watchDataRow.DataRowChanged += dataRow_DataRowChanged;
     }
 
-    public void RemoveWatch(IDataRow dataRow) {
-
-      dataRowWatches.Remove(dataRow);
-      dataRow.DataRowChanged -= dataRow_DataRowChanged;
-      dataRow.ValuesChanged -= dataRow_ValuesChanged;
-      dataRow.ValueChanged -= dataRow_ValueChanged;
+    public void RemoveWatch(IDataRow watchDataRow) {
+      dataRowWatches.Remove(watchDataRow);
+      watchDataRow.DataRowChanged -= dataRow_DataRowChanged;
+      watchDataRow.ValuesChanged -= dataRow_ValuesChanged;
+      watchDataRow.ValueChanged -= dataRow_ValueChanged;
     }
 
-
     #endregion
-
-    List<IDataRow> dataRowWatches = new List<IDataRow>();
 
     void dataRow_ValueChanged(IDataRow row, double value, int index, Action action) {
       switch (action) {
         case Action.Added:
-          refreshValue(row, value, Action.Added);
+          refreshLastValues(row);
           break;
         case Action.Modified:
@@ -38,10 +35,9 @@
           break;
         case Action.Deleted:
-          refreshValue(row, value, Action.Deleted);
+          refreshLastValues(row);
           break;
         default:
           throw new ArgumentOutOfRangeException("action");
       }
-
     }
 
@@ -57,10 +53,10 @@
 
     private void refreshValue() {
-      double tmpSum = 0;
+      
       int count = dataRowWatches.Count;
 
       IDataRow firstRow = dataRowWatches[0];
       int count1 = firstRow.Count;
-      System.Console.WriteLine("count: " + count1);
+      Console.WriteLine("count: " + count1);
 
       dataRow.Clear();
@@ -68,5 +64,5 @@
       if (dataRowWatches.Count >= 2) {
         for (int i = 0; i < count1; i++) {
-          tmpSum = 0;
+          double tmpSum = 0;
           for (int j = 0; j < count; j++) {
             if (dataRowWatches[j].Count > i) {
@@ -75,5 +71,5 @@
           }
 
-          this.dataRow.Add(tmpSum / count);
+          dataRow.Add(tmpSum / count);
           OnValueChanged(tmpSum / count, dataRow.Count - 1, Action.Added);
         }
@@ -81,25 +77,13 @@
     }
 
-    private void refreshValue(IDataRow row, double newVal, Action action) {
+    private void refreshLastValues(IDataRow row) {
 
       int index = row.Count - 1;
-
-
-      
-      
       double curAvg = 0;
-//      if (dataRow.Count > 0) {
-//        curAvg = dataRow[0];   //?
-//      } else {
-//        curAvg = 0;
-//      }
-
 
       foreach (IDataRow watch in dataRowWatches) {
         if (watch.Count >= index +1) {
-          curAvg += watch[index];
-          
+          curAvg += watch[index]; 
         }
-        //curAvg += watch[watch.Count - 1];
       }
 
@@ -116,49 +100,4 @@
         OnValueChanged(curAvg, dataRow.Count - 1, Action.Modified);  
       }
-
-
-
-//      curAvg *= dataRow.Count * dataRowWatches.Count;
-//      switch (action) {
-//        case Action.Added:
-//          curAvg += newVal;
-//          break;
-//        case Action.Modified:
-//          throw new InvalidOperationException();
-//        case Action.Deleted:
-//          curAvg -= newVal;
-//          break;
-//        default:
-//          throw new ArgumentOutOfRangeException("action");
-//      }
-//
-//      dataRow.Add((curAvg / (dataRow.Count + 1)) / dataRowWatches.Count);
-//      OnValueChanged((curAvg / (dataRow.Count + 1)) / dataRowWatches.Count, dataRow.Count - 1, Action.Added); // nicht immer adden!
-
-      //      double tmpSum = 0;
-      //      int count = dataRowWatches.Count;
-      //
-      //      IDataRow firstRow = dataRowWatches[0];
-      //      int count1 = firstRow.Count;
-      //      System.Console.WriteLine("count: " + count1);
-      //
-      //      dataRow.Clear();
-      //
-      //      if (dataRowWatches.Count >= 2) {
-      //        for (int i = 0; i < count1; i++) {
-      //          tmpSum = 0;
-      //          for (int j = 0; j < count; j++) {
-      //            if (dataRowWatches[j].Count > i) {
-      //              tmpSum += dataRowWatches[j][i];
-      //            }
-      //          }
-      //
-      //          this.dataRow.Add(tmpSum/count);
-      //          OnValueChanged(tmpSum / count, dataRow.Count - 1, Action.Added);
-      //        }
-      //      }
-
-      // evtl nur feuern wenn sich geändert hat (jedes mal?)
-      //OnDataRowChanged(this);
     }
 
@@ -171,5 +110,5 @@
 
     public override void AddValue(double value, int index) {
-      throw new NotImplementedException();
+      throw new NotSupportedException();
     }
 
@@ -194,5 +133,5 @@
     }
 
-    public override void RemoveValues(int index, int count) {
+    public override void RemoveValues(int index, int countVals) {
       throw new NotSupportedException();
     }
@@ -210,10 +149,8 @@
     }
 
-    // TODO calculate min value
     public override double MinValue {
       get { return 0; }
     }
 
-    // TODO calculate max value
     public override double MaxValue {
       get { return 0; }
Index: /trunk/sources/HeuristicLab.Visualization/3.2/MaxAggregator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Visualization/3.2/MaxAggregator.cs	(revision 1606)
+++ /trunk/sources/HeuristicLab.Visualization/3.2/MaxAggregator.cs	(revision 1607)
@@ -1,5 +1,4 @@
 ﻿using System;
 using System.Collections.Generic;
-using System.Drawing;
 
 namespace HeuristicLab.Visualization {
