Index: /branches/StatisticalTesting/HeuristicLab.Analysis.Statistics/3.3/ChartAnalysisView.cs
===================================================================
--- /branches/StatisticalTesting/HeuristicLab.Analysis.Statistics/3.3/ChartAnalysisView.cs	(revision 11696)
+++ /branches/StatisticalTesting/HeuristicLab.Analysis.Statistics/3.3/ChartAnalysisView.cs	(revision 11697)
@@ -56,5 +56,5 @@
       InitializeComponent();
 
-      stringConvertibleMatrixView.DataGridView.RowHeaderMouseDoubleClick += new DataGridViewCellMouseEventHandler(DataGridView_RowHeaderMouseDoubleClick);
+      stringConvertibleMatrixView.DataGridView.RowHeaderMouseDoubleClick += DataGridView_RowHeaderMouseDoubleClick;
 
       var fittingAlgs = ApplicationManager.Manager.GetInstances<IFitting>();
@@ -67,5 +67,5 @@
     protected override void Dispose(bool disposing) {
       if (disposing && (components != null)) {
-        stringConvertibleMatrixView.DataGridView.RowHeaderMouseDoubleClick -= new DataGridViewCellMouseEventHandler(DataGridView_RowHeaderMouseDoubleClick);
+        stringConvertibleMatrixView.DataGridView.RowHeaderMouseDoubleClick -= DataGridView_RowHeaderMouseDoubleClick;
         components.Dispose();
       }
@@ -93,65 +93,31 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.ItemsAdded += Content_ItemsAdded;
-      Content.ItemsRemoved += Content_ItemsRemoved;
+      Content.ColumnsChanged += Content_ColumnsChanged;
+      Content.RowsChanged += Content_RowsChanged;
       Content.CollectionReset += Content_CollectionReset;
       Content.UpdateOfRunsInProgressChanged += Content_UpdateOfRunsInProgressChanged;
-      RegisterRunEvents(Content);
     }
 
     protected override void DeregisterContentEvents() {
       base.DeregisterContentEvents();
-      Content.ItemsAdded -= Content_ItemsAdded;
-      Content.ItemsRemoved -= Content_ItemsRemoved;
+      Content.ColumnsChanged -= Content_ColumnsChanged;
+      Content.RowsChanged -= Content_RowsChanged;
       Content.CollectionReset -= Content_CollectionReset;
       Content.UpdateOfRunsInProgressChanged -= Content_UpdateOfRunsInProgressChanged;
-      DeregisterRunEvents(Content);
-    }
-
-    private void RegisterRunEvents(IEnumerable<IRun> runs) {
-      foreach (IRun run in runs) {
-        RegisterRunResultsEvents(run);
-      }
-    }
-
-    private void DeregisterRunEvents(IEnumerable<IRun> runs) {
-      foreach (IRun run in runs) {
-        DeregisterRunResultsEvents(run);
-      }
-    }
-
-    private void RegisterRunResultsEvents(IRun run) {
-      IObservableDictionary<string, IItem> dict = run.Results;
-      dict.ItemsAdded += run_Changed;
-      dict.ItemsRemoved += run_Changed;
-      dict.ItemsReplaced += run_Changed;
-      dict.CollectionReset += run_Changed;
-    }
-
-    private void DeregisterRunResultsEvents(IRun run) {
-      IObservableDictionary<string, IItem> dict = run.Results;
-      dict.ItemsAdded -= run_Changed;
-      dict.ItemsRemoved -= run_Changed;
-      dict.ItemsReplaced -= run_Changed;
-      dict.CollectionReset -= run_Changed;
+    }
+
+    void Content_RowsChanged(object sender, EventArgs e) {
+      RebuildDataTableAsync();
+    }
+
+    void Content_ColumnsChanged(object sender, EventArgs e) {
+      RebuildDataTableAsync();
     }
 
     private void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<IRun> e) {
-      DeregisterRunEvents(e.OldItems);
-      RegisterRunEvents(e.Items);
       UpdateComboboxes();
       RebuildDataTableAsync();
     }
 
-    private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IRun> e) {
-      DeregisterRunEvents(e.Items);
-      RebuildDataTableAsync();
-    }
-
-    private void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IRun> e) {
-      RegisterRunEvents(e.Items);
-      RebuildDataTableAsync();
-    }
-
     private void Content_UpdateOfRunsInProgressChanged(object sender, EventArgs e) {
       suppressUpdates = Content.UpdateOfRunsInProgress;
@@ -164,15 +130,7 @@
       }
     }
-
-    private void run_Changed(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(run_Changed), sender, e);
-      else if (!suppressUpdates) {
-        UpdateComboboxes();
-      }
-    }
     #endregion
 
-    #region Events
+    #region events
     private void DataGridView_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) {
       if (e.RowIndex >= 0) {
@@ -219,5 +177,5 @@
 
         var fittingAlg = fittingComboBox.SelectedItem as IFitting;
-        DataRow newRow = fittingAlg.CalculateFittedLine(values, row.Name + " (" + fittingAlg.ToString() + ")");
+        DataRow newRow = fittingAlg.CalculateFittedLine(values, row.Name + " (" + fittingAlg + ")");
 
         if (!resTable.Rows.ContainsKey(newRow.Name))
@@ -239,5 +197,5 @@
             string newResultName = resultName + " " + rowName + " " + sm.ColumnNames.ElementAt(j);
             if (!run.Results.ContainsKey(newResultName)) {
-              run.Results.Add(new KeyValuePair<string, Core.IItem>(newResultName, new DoubleValue(sm[i, j])));
+              run.Results.Add(new KeyValuePair<string, IItem>(newResultName, new DoubleValue(sm[i, j])));
             }
           }
@@ -306,5 +264,4 @@
     private void RebuildDataTable(string resultName, string rowName) {
       LinearLeastSquaresFitting llsFitting = new LinearLeastSquaresFitting();
-      LogFitting logFitting = new LogFitting();
       string[] columnNames = new string[] { "Count", "Minimum", "Maximum", "Average", "Median", "Standard Deviation", "Variance", "25th Percentile", "75th Percentile",
         "Avg. of Upper 25 %", " Avg. of Lower 25 %", "Avg. of First 25 %", "Avg. of Last 25 %", "Linear Gradient", "Average Relative Error" };
Index: /branches/StatisticalTesting/HeuristicLab.Analysis.Statistics/3.3/CorrelationView.cs
===================================================================
--- /branches/StatisticalTesting/HeuristicLab.Analysis.Statistics/3.3/CorrelationView.cs	(revision 11696)
+++ /branches/StatisticalTesting/HeuristicLab.Analysis.Statistics/3.3/CorrelationView.cs	(revision 11697)
@@ -23,6 +23,4 @@
 using System.Collections.Generic;
 using System.Linq;
-using HeuristicLab.Collections;
-using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
 using HeuristicLab.Data;
@@ -80,81 +78,27 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.ItemsAdded += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_ItemsAdded);
-      Content.ItemsRemoved += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_ItemsRemoved);
+      Content.ColumnsChanged += Content_ColumnsChanged;
+      Content.RowsChanged += Content_RowsChanged;
       Content.CollectionReset += new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_CollectionReset);
       Content.UpdateOfRunsInProgressChanged += Content_UpdateOfRunsInProgressChanged;
-      RegisterRunEvents(Content);
     }
 
     protected override void DeregisterContentEvents() {
       base.DeregisterContentEvents();
-      Content.ItemsAdded -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_ItemsAdded);
-      Content.ItemsRemoved -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_ItemsRemoved);
+      Content.ColumnsChanged -= Content_ColumnsChanged;
+      Content.RowsChanged -= Content_RowsChanged;
       Content.CollectionReset -= new HeuristicLab.Collections.CollectionItemsChangedEventHandler<IRun>(Content_CollectionReset);
       Content.UpdateOfRunsInProgressChanged -= Content_UpdateOfRunsInProgressChanged;
-      DeregisterRunEvents(Content);
-    }
-
-    private void RegisterRunEvents(IEnumerable<IRun> runs) {
-      foreach (IRun run in runs) {
-        RegisterRunResultsEvents(run);
-        RegisterRunParametersEvents(run);
-        run.PropertyChanged += run_PropertyChanged;
-      }
-    }
-
-    private void DeregisterRunEvents(IEnumerable<IRun> runs) {
-      foreach (IRun run in runs) {
-        DeregisterRunResultsEvents(run);
-        DeregisterRunParametersEvents(run);
-        run.PropertyChanged -= run_PropertyChanged;
-      }
-    }
-
-    private void RegisterRunResultsEvents(IRun run) {
-      IObservableDictionary<string, IItem> dict = run.Results;
-      dict.ItemsAdded += run_Changed;
-      dict.ItemsRemoved += run_Changed;
-      dict.ItemsReplaced += run_Changed;
-      dict.CollectionReset += run_Changed;
-    }
-
-    private void DeregisterRunResultsEvents(IRun run) {
-      IObservableDictionary<string, IItem> dict = run.Results;
-      dict.ItemsAdded -= run_Changed;
-      dict.ItemsRemoved -= run_Changed;
-      dict.ItemsReplaced -= run_Changed;
-      dict.CollectionReset -= run_Changed;
-    }
-
-    private void RegisterRunParametersEvents(IRun run) {
-      IObservableDictionary<string, IItem> dict = run.Parameters;
-      dict.ItemsAdded += run_Changed;
-      dict.ItemsRemoved += run_Changed;
-      dict.ItemsReplaced += run_Changed;
-      dict.CollectionReset += run_Changed;
-    }
-
-    private void DeregisterRunParametersEvents(IRun run) {
-      IObservableDictionary<string, IItem> dict = run.Parameters;
-      dict.ItemsAdded -= run_Changed;
-      dict.ItemsRemoved -= run_Changed;
-      dict.ItemsReplaced -= run_Changed;
-      dict.CollectionReset -= run_Changed;
+    }
+
+    void Content_RowsChanged(object sender, EventArgs e) {
+      UpdateUI();
+    }
+
+    void Content_ColumnsChanged(object sender, EventArgs e) {
+      UpdateUI();
     }
 
     private void Content_CollectionReset(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IRun> e) {
-      DeregisterRunEvents(e.OldItems);
-      RegisterRunEvents(e.Items);
-      UpdateUI();
-    }
-
-    private void Content_ItemsRemoved(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IRun> e) {
-      DeregisterRunEvents(e.Items);
-      UpdateUI();
-    }
-
-    private void Content_ItemsAdded(object sender, HeuristicLab.Collections.CollectionItemsChangedEventArgs<IRun> e) {
-      RegisterRunEvents(e.Items);
       UpdateUI();
     }
@@ -162,15 +106,4 @@
     private void Content_UpdateOfRunsInProgressChanged(object sender, EventArgs e) {
       suppressUpdates = Content.UpdateOfRunsInProgress;
-      UpdateUI();
-    }
-
-    private void run_Changed(object sender, EventArgs e) {
-      if (InvokeRequired) {
-        Invoke(new EventHandler(run_Changed), sender, e);
-      }
-      UpdateUI();
-    }
-
-    void run_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
       UpdateUI();
     }
Index: /branches/StatisticalTesting/HeuristicLab.Analysis.Statistics/3.3/SampleSizeInfluenceView.cs
===================================================================
--- /branches/StatisticalTesting/HeuristicLab.Analysis.Statistics/3.3/SampleSizeInfluenceView.cs	(revision 11696)
+++ /branches/StatisticalTesting/HeuristicLab.Analysis.Statistics/3.3/SampleSizeInfluenceView.cs	(revision 11697)
@@ -41,4 +41,5 @@
     private const string BoxPlotSeriesName = "BoxPlotSeries";
     private const string BoxPlotChartAreaName = "BoxPlotChartArea";
+    private const string delimitor = ";";
 
     private bool suppressUpdates = false;
@@ -221,14 +222,14 @@
         }
 
-        if (values.Count() > 0) {
+        if (values.Any()) {
           if (hypergeometricCheckBox.Checked) {
-            xAxisTextBox.Text += ((int)(values.Count() / 16)).ToString() + "; ";
-            xAxisTextBox.Text += ((int)(values.Count() / 8)).ToString() + "; ";
-            xAxisTextBox.Text += ((int)(values.Count() / 4)).ToString();
+            xAxisTextBox.Text += ((int)(values.Count() / 16)) + delimitor + " ";
+            xAxisTextBox.Text += ((int)(values.Count() / 8)) + delimitor + " ";
+            xAxisTextBox.Text += (int)(values.Count() / 4);
           } else {
-            xAxisTextBox.Text += ((int)(values.Count() / 4)).ToString() + "; ";
-            xAxisTextBox.Text += ((int)(values.Count() / 2)).ToString() + "; ";
-            xAxisTextBox.Text += ((int)(values.Count() / 4 * 3)).ToString() + "; ";
-            xAxisTextBox.Text += ((int)(values.Count())).ToString();
+            xAxisTextBox.Text += ((int)(values.Count() / 4)) + delimitor + " ";
+            xAxisTextBox.Text += ((int)(values.Count() / 2)) + delimitor + " ";
+            xAxisTextBox.Text += ((int)(values.Count() / 4 * 3)) + delimitor + " ";
+            xAxisTextBox.Text += (int)(values.Count());
           }
         }
@@ -332,11 +333,10 @@
       if (yValue.Any(x => !x.HasValue)) return;
 
-      double y = SampleSizeDetermination.DetermineSampleSizeByEstimatingMeanForLargeSampleSizes(yValue.Select(x => x.Value).ToArray());
-      sampleSizeTextBox.Text = y.ToString();
+      double estimatedSampleSize = SampleSizeDetermination.DetermineSampleSizeByEstimatingMeanForLargeSampleSizes(yValue.Select(x => x.Value).ToArray());
+      sampleSizeTextBox.Text = estimatedSampleSize.ToString();
     }
 
     private List<int> ParseGroupSizesFromText(string groupsText, bool verbose = true) {
-      const string delimitor = ";";
-      string[] gs = groupsText.Split(delimitor.ToString().ToCharArray());
+      string[] gs = groupsText.Split(delimitor.ToCharArray());
       List<int> vals = new List<int>();
 
@@ -352,5 +352,5 @@
           catch (Exception ex) {
             if (verbose) {
-              ErrorHandling.ShowErrorDialog("Can't parse group sizes. Please only use numbers seperated by a semicolon. ", ex);
+              ErrorHandling.ShowErrorDialog("Can't parse group sizes. Please only use numbers seperated by a " + delimitor + ". ", ex);
             }
           }
@@ -481,6 +481,5 @@
         this.categoricalMapping[dimension] = new Dictionary<object, double>();
         var orderedCategories = Content.Where(r => r.Visible && Content.GetValue(r, dimension) != null).Select(r => Content.GetValue(r, dimension).ToString())
-
-                                       .Distinct().OrderBy(x => x, new NaturalStringComparer());
+                                          .Distinct().OrderBy(x => x, new NaturalStringComparer());
         int count = 1;
         foreach (var category in orderedCategories) {
@@ -624,5 +623,5 @@
           string newVals = "";
           foreach (int v in values) {
-            newVals += v + "; ";
+            newVals += v + delimitor + " ";
           }
           xAxisTextBox.Text = newVals;
