Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/DataAnalysisProblemDataView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/DataAnalysisProblemDataView.cs	(revision 3461)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/DataAnalysisProblemDataView.cs	(revision 3462)
@@ -29,5 +29,9 @@
       : this() {
       Content = content;
-      variableCollectionView.Content = content.Variables.AsReadOnly();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      variableCollectionView.Content = Content.Variables.AsReadOnly();
     }
 
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/EstimatedValuesView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/EstimatedValuesView.cs	(revision 3461)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/EstimatedValuesView.cs	(revision 3462)
@@ -68,5 +68,5 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.ModelChanged += new EventHandler(Content_ModelChanged);
+      Content.EstimatedValuesChanged += new EventHandler(Content_EstimatedValuesChanged);
       Content.ProblemDataChanged += new EventHandler(Content_ProblemDataChanged);
     }
@@ -74,5 +74,5 @@
     protected override void DeregisterContentEvents() {
       base.DeregisterContentEvents();
-      Content.ModelChanged -= new EventHandler(Content_ModelChanged);
+      Content.EstimatedValuesChanged -= new EventHandler(Content_EstimatedValuesChanged);
       Content.ProblemDataChanged -= new EventHandler(Content_ProblemDataChanged);
     }
@@ -82,5 +82,5 @@
     }
 
-    void Content_ModelChanged(object sender, EventArgs e) {
+    void Content_EstimatedValuesChanged(object sender, EventArgs e) {
       OnContentChanged();
     }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/LineChartView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/LineChartView.cs	(revision 3461)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/LineChartView.cs	(revision 3462)
@@ -65,9 +65,15 @@
       : this() {
       Content = dataAnalysisSolution;
-      DrawTargetVariableValues();
-      DrawEstimatedValues();
+      RedrawChart();
     }
 
-    private void DrawEstimatedValues() {
+    private void RedrawChart() {
+      this.chart.Series.Clear();
+      this.chart.Series.Add(TARGETVARIABLE_SERIES_NAME);
+      this.chart.Series[TARGETVARIABLE_SERIES_NAME].LegendText = Content.ProblemData.TargetVariable.Value;
+      this.chart.Series[TARGETVARIABLE_SERIES_NAME].ChartType = SeriesChartType.FastLine;
+      this.chart.Series[TARGETVARIABLE_SERIES_NAME].Points.DataBindY(Content.ProblemData.Dataset[Content.ProblemData.TargetVariable.Value]);
+      this.UpdateStripLines();
+
       this.chart.Series.Add(ESTIMATEDVALUES_SERIES_NAME);
       this.chart.Series[ESTIMATEDVALUES_SERIES_NAME].LegendText = Content.ItemName;
@@ -77,17 +83,8 @@
     }
 
-    private void DrawTargetVariableValues() {
-      this.chart.Series.Clear();
-      this.chart.Series.Add(TARGETVARIABLE_SERIES_NAME);
-      this.chart.Series[TARGETVARIABLE_SERIES_NAME].LegendText = Content.ProblemData.TargetVariable.Value;
-      this.chart.Series[TARGETVARIABLE_SERIES_NAME].ChartType = SeriesChartType.FastLine;
-      this.chart.Series[TARGETVARIABLE_SERIES_NAME].Points.DataBindY(Content.ProblemData.Dataset[Content.ProblemData.TargetVariable.Value]);
-      this.UpdateStripLines();
-    }
-
     #region events
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.ModelChanged += new EventHandler(Content_ModelChanged);
+      Content.EstimatedValuesChanged += new EventHandler(Content_EstimatedValuesChanged);
       Content.ProblemDataChanged += new EventHandler(Content_ProblemDataChanged);
     }
@@ -95,19 +92,19 @@
     protected override void DeregisterContentEvents() {
       base.DeregisterContentEvents();
-      Content.ModelChanged -= new EventHandler(Content_ModelChanged);
+      Content.EstimatedValuesChanged -= new EventHandler(Content_EstimatedValuesChanged);
       Content.ProblemDataChanged -= new EventHandler(Content_ProblemDataChanged);
     }
 
     void Content_ProblemDataChanged(object sender, EventArgs e) {
-      OnContentChanged();
+      RedrawChart();
     }
 
-    void Content_ModelChanged(object sender, EventArgs e) {
-      OnContentChanged();
+    void Content_EstimatedValuesChanged(object sender, EventArgs e) {
+      UpdateEstimatedValuesLineChart();
     }
 
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      UpdateEstimatedValuesLineChart();
+      RedrawChart();
     }
 
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ScatterPlotView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ScatterPlotView.cs	(revision 3461)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/ScatterPlotView.cs	(revision 3462)
@@ -84,14 +84,15 @@
       : this() {
       Content = dataAnalysisSolution;
+      UpdateChart();
     }
 
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.ModelChanged += new EventHandler(Content_ModelChanged);
+      Content.EstimatedValuesChanged += new EventHandler(Content_EstimatedValuesChanged);
       Content.ProblemDataChanged += new EventHandler(Content_ProblemDataChanged);
     }
     protected override void DeregisterContentEvents() {
       base.DeregisterContentEvents();
-      Content.ModelChanged -= new EventHandler(Content_ModelChanged);
+      Content.EstimatedValuesChanged -= new EventHandler(Content_EstimatedValuesChanged);
       Content.ProblemDataChanged -= new EventHandler(Content_ProblemDataChanged);
     }
@@ -99,9 +100,9 @@
 
     void Content_ProblemDataChanged(object sender, EventArgs e) {
-      OnContentChanged();
-    }
-
-    void Content_ModelChanged(object sender, EventArgs e) {
-      OnContentChanged();
+      UpdateChart();
+    }
+
+    void Content_EstimatedValuesChanged(object sender, EventArgs e) {
+      UpdateSeries();
     }
 
@@ -127,30 +128,33 @@
 
     private void UpdateSeries() {
-      string targetVariableName = Content.ProblemData.TargetVariable.Value;
-      Dataset dataset = Content.ProblemData.Dataset;
-      int trainingStart = Content.ProblemData.TrainingSamplesStart.Value;
-      int trainingEnd = Content.ProblemData.TrainingSamplesEnd.Value;
-      int testStart = Content.ProblemData.TestSamplesStart.Value;
-      int testEnd = Content.ProblemData.TestSamplesEnd.Value;
-      if (this.chart.Series[ALL_SERIES].Points.Count > 0)
-        this.chart.Series[ALL_SERIES].Points.DataBindXY(Content.EstimatedValues.ToArray(), "",
-          dataset[targetVariableName], "");
-      if (this.chart.Series[TRAINING_SERIES].Points.Count > 0)
-        this.chart.Series[TRAINING_SERIES].Points.DataBindXY(Content.EstimatedTrainingValues.ToArray(), "",
-          dataset.GetVariableValues(targetVariableName, trainingStart, trainingEnd), "");
-      if (this.chart.Series[TEST_SERIES].Points.Count > 0)
-        this.chart.Series[TEST_SERIES].Points.DataBindXY(Content.EstimatedTestValues.ToArray(), "",
-          dataset.GetVariableValues(targetVariableName, testStart, testEnd), "");
-
-      double max = Math.Max(Content.EstimatedValues.Max(), dataset.GetMax(targetVariableName));
-      double min = Math.Min(Content.EstimatedValues.Min(), dataset.GetMin(targetVariableName));
-
-      max = Math.Ceiling(max) * 1.2;
-      min = Math.Floor(min) * 0.8;
-
-      this.chart.ChartAreas[0].AxisX.Maximum = max;
-      this.chart.ChartAreas[0].AxisX.Minimum = min;
-      this.chart.ChartAreas[0].AxisY.Maximum = max;
-      this.chart.ChartAreas[0].AxisY.Minimum = min;
+      if (InvokeRequired) Invoke((Action)UpdateSeries);
+      else {
+        string targetVariableName = Content.ProblemData.TargetVariable.Value;
+        Dataset dataset = Content.ProblemData.Dataset;
+        int trainingStart = Content.ProblemData.TrainingSamplesStart.Value;
+        int trainingEnd = Content.ProblemData.TrainingSamplesEnd.Value;
+        int testStart = Content.ProblemData.TestSamplesStart.Value;
+        int testEnd = Content.ProblemData.TestSamplesEnd.Value;
+        if (this.chart.Series[ALL_SERIES].Points.Count > 0)
+          this.chart.Series[ALL_SERIES].Points.DataBindXY(Content.EstimatedValues.ToArray(), "",
+            dataset[targetVariableName], "");
+        if (this.chart.Series[TRAINING_SERIES].Points.Count > 0)
+          this.chart.Series[TRAINING_SERIES].Points.DataBindXY(Content.EstimatedTrainingValues.ToArray(), "",
+            dataset.GetVariableValues(targetVariableName, trainingStart, trainingEnd), "");
+        if (this.chart.Series[TEST_SERIES].Points.Count > 0)
+          this.chart.Series[TEST_SERIES].Points.DataBindXY(Content.EstimatedTestValues.ToArray(), "",
+            dataset.GetVariableValues(targetVariableName, testStart, testEnd), "");
+
+        double max = Math.Max(Content.EstimatedValues.Max(), dataset.GetMax(targetVariableName));
+        double min = Math.Min(Content.EstimatedValues.Min(), dataset.GetMin(targetVariableName));
+
+        max = Math.Ceiling(max) * 1.2;
+        min = Math.Floor(min) * 0.8;
+
+        this.chart.ChartAreas[0].AxisX.Maximum = max;
+        this.chart.ChartAreas[0].AxisX.Minimum = min;
+        this.chart.ChartAreas[0].AxisY.Maximum = max;
+        this.chart.ChartAreas[0].AxisY.Minimum = min;
+      }
     }
 
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/SimplifiedSymbolicExpressionModelView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/SimplifiedSymbolicExpressionModelView.cs	(revision 3461)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/SimplifiedSymbolicExpressionModelView.cs	(revision 3462)
@@ -44,5 +44,5 @@
     public new SymbolicRegressionSolution Content {
       get { return (SymbolicRegressionSolution)base.Content; }
-      set {        base.Content = value;       }
+      set { base.Content = value; }
     }
 
@@ -58,6 +58,24 @@
     }
 
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ModelChanged += new EventHandler(Content_ModelChanged);
+    }
+
+    protected override void DeregisterContentEvents() {
+      base.DeregisterContentEvents();
+      Content.ModelChanged -= new EventHandler(Content_ModelChanged);
+    }
+
+    void Content_ModelChanged(object sender, EventArgs e) {
+      UpdateTreeChart();
+    }
+
     protected override void OnContentChanged() {
       base.OnContentChanged();
+      UpdateTreeChart();
+    }
+
+    private void UpdateTreeChart() {
       var simplifier = new SymbolicSimplifier();
       var simplifiedTree = simplifier.Simplify(Content.Model.SymbolicExpressionTree);
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/SymbolicExpressionModelView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/SymbolicExpressionModelView.cs	(revision 3461)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/SymbolicExpressionModelView.cs	(revision 3462)
@@ -57,6 +57,25 @@
     }
 
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ModelChanged += new EventHandler(Content_ModelChanged);
+    }
+
+    protected override void DeregisterContentEvents() {
+      base.DeregisterContentEvents();
+      Content.ModelChanged -= new EventHandler(Content_ModelChanged);
+    }
+
+    void Content_ModelChanged(object sender, EventArgs e) {
+      UpdateTreeChart();
+    }
+
     protected override void OnContentChanged() {
       base.OnContentChanged();
+      UpdateTreeChart();
+    }
+
+    private void UpdateTreeChart() {
       viewHost.Content = Content.Model.SymbolicExpressionTree;
     }
