Index: /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis.Views/3.4/CorrelationHeatMapView.Designer.cs
===================================================================
--- /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis.Views/3.4/CorrelationHeatMapView.Designer.cs	(revision 8317)
+++ /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis.Views/3.4/CorrelationHeatMapView.Designer.cs	(revision 8318)
@@ -28,5 +28,5 @@
       this.PartitionLabel = new System.Windows.Forms.Label();
       this.PartitionComboBox = new System.Windows.Forms.ComboBox();
-      this.ExtendedHeatMap = new HeuristicLab.Problems.DataAnalysis.Views.ExtendedHeatMapView();
+      this.ExtendedHeatMapView = new HeuristicLab.Problems.DataAnalysis.Views.ExtendedHeatMapView();
       this.HeatMapProgressBar = new System.Windows.Forms.ProgressBar();
       this.SuspendLayout();
@@ -70,14 +70,14 @@
       // ExtendedHeatMap
       // 
-      this.ExtendedHeatMap.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+      this.ExtendedHeatMapView.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.ExtendedHeatMap.Caption = "ExtendedHeatMap View";
-      this.ExtendedHeatMap.Content = null;
-      this.ExtendedHeatMap.Location = new System.Drawing.Point(3, 30);
-      this.ExtendedHeatMap.Name = "ExtendedHeatMap";
-      this.ExtendedHeatMap.ReadOnly = false;
-      this.ExtendedHeatMap.Size = new System.Drawing.Size(627, 275);
-      this.ExtendedHeatMap.TabIndex = 4;
+      this.ExtendedHeatMapView.Caption = "ExtendedHeatMap View";
+      this.ExtendedHeatMapView.Content = null;
+      this.ExtendedHeatMapView.Location = new System.Drawing.Point(3, 30);
+      this.ExtendedHeatMapView.Name = "ExtendedHeatMap";
+      this.ExtendedHeatMapView.ReadOnly = false;
+      this.ExtendedHeatMapView.Size = new System.Drawing.Size(627, 275);
+      this.ExtendedHeatMapView.TabIndex = 4;
       // 
       // HeatMapProgressBar
@@ -101,5 +101,5 @@
       this.Controls.Add(this.CorrelationCalcLabel);
       this.Controls.Add(this.CorrelationCalcComboBox);
-      this.Controls.Add(this.ExtendedHeatMap);
+      this.Controls.Add(this.ExtendedHeatMapView);
       this.Name = "CorrelationHeatMapView";
       this.Size = new System.Drawing.Size(633, 308);
@@ -115,5 +115,5 @@
     protected System.Windows.Forms.Label PartitionLabel;
     protected System.Windows.Forms.ComboBox PartitionComboBox;
-    protected HeuristicLab.Problems.DataAnalysis.Views.ExtendedHeatMapView ExtendedHeatMap;
+    protected HeuristicLab.Problems.DataAnalysis.Views.ExtendedHeatMapView ExtendedHeatMapView;
     private System.Windows.Forms.ProgressBar HeatMapProgressBar;
   }
Index: /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis.Views/3.4/CorrelationHeatMapView.cs
===================================================================
--- /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis.Views/3.4/CorrelationHeatMapView.cs	(revision 8317)
+++ /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis.Views/3.4/CorrelationHeatMapView.cs	(revision 8318)
@@ -55,5 +55,5 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      ExtendedHeatMap.Content = Content;
+      ExtendedHeatMapView.Content = Content;
       if (Content != null) {
         CorrelationCalcComboBox.DataSource = Content.CorrelationCalculators;
Index: /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisProblemData.cs
===================================================================
--- /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisProblemData.cs	(revision 8317)
+++ /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/DataAnalysisProblemData.cs	(revision 8318)
@@ -114,6 +114,14 @@
     [StorableConstructor]
     protected DataAnalysisProblemData(bool deserializing) : base(deserializing) { }
+
     [StorableHook(HookType.AfterDeserialization)]
     private void AfterDeserialization() {
+      // BackwardsCompatibility3.3
+      #region Backwards compatible code, remove with 3.4
+      if (!Parameters.ContainsKey(DatasetHeatMapParameterName)) {
+        Parameters.Add(new FixedValueParameter<ExtendedHeatMap>(DatasetHeatMapParameterName, "", new ExtendedHeatMap()));
+      }
+      #endregion
+      DatasetHeatMap.ProblemData = this;
       RegisterEventHandlers();
     }
Index: /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/ExtendedHeatMap.cs
===================================================================
--- /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/ExtendedHeatMap.cs	(revision 8317)
+++ /branches/DatasetFeatureCorrelation/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/ExtendedHeatMap.cs	(revision 8318)
@@ -26,4 +26,5 @@
 using System.Linq;
 using HeuristicLab.Analysis;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -31,19 +32,42 @@
 
 namespace HeuristicLab.Problems.DataAnalysis {
+  [StorableClass]
   [Item("HeatMap", "Represents a heat map of double values.")]
-  [StorableClass]
   public class ExtendedHeatMap : HeatMap {
 
+    private const string PrearsonsRSquared = "Pearsons R Squared";
+    private const string HoeffdingsDependence = "Hoeffdings Dependence";
+    private const string SpearmansRank = "Spearmans Rank";
+    public IEnumerable<string> CorrelationCalculators {
+      get { return new List<string>() { PrearsonsRSquared, HoeffdingsDependence, SpearmansRank }; }
+    }
+
+    private const string AllSamples = "All Samples";
+    private const string TrainingSamples = "Training Samples";
+    private const string TestSamples = "Test Samples";
+    public IEnumerable<string> Partitions {
+      get { return new List<string>() { AllSamples, TrainingSamples, TestSamples }; }
+    }
+
     private IDataAnalysisProblemData problemData;
+    public IDataAnalysisProblemData ProblemData {
+      get { return problemData; }
+      set {
+        if (problemData != value) {
+          problemData = value;
+          columnNames = value.Dataset.DoubleVariables.ToList();
+          rowNames = value.Dataset.DoubleVariables.ToList();
+          OnProblemDataChanged();
+        }
+      }
+    }
 
     private BackgroundWorker bw;
-
-    public delegate void ProgressCalculationHandler(object sender, ProgressChangedEventArgs e);
-    public event ProgressCalculationHandler ProgressCalculation;
 
     public ExtendedHeatMap()
       : base() {
-      columnNames = Enumerable.Range(1, 2).Select(x => x.ToString()).ToList();
-      rowNames = Enumerable.Range(1, 2).Select(x => x.ToString()).ToList();
+      this.Title = "Feature Correlation";
+      this.columnNames = Enumerable.Range(1, 2).Select(x => x.ToString()).ToList();
+      this.rowNames = Enumerable.Range(1, 2).Select(x => x.ToString()).ToList();
     }
 
@@ -56,17 +80,13 @@
       CalculateElements(problemData.Dataset);
     }
-
-    private const string PrearsonsRSquared = "Pearsons R Squared";
-    private const string HoeffdingsDependence = "Hoeffdings Dependence";
-    private const string SpearmansRank = "Spearmans Rank";
-    public IEnumerable<string> CorrelationCalculators {
-      get { return new List<string>() { PrearsonsRSquared, HoeffdingsDependence, SpearmansRank }; }
-    }
-
-    private const string AllSamples = "All Samples";
-    private const string TrainingSamples = "Training Samples";
-    private const string TestSamples = "Test Samples";
-    public IEnumerable<string> Partitions {
-      get { return new List<string>() { AllSamples, TrainingSamples, TestSamples }; }
+    protected ExtendedHeatMap(ExtendedHeatMap original, Cloner cloner)
+      : base(original, cloner) {
+      this.Title = "Feature Correlation";
+      this.problemData = original.problemData;
+      this.columnNames = original.problemData.Dataset.DoubleVariables.ToList();
+      this.rowNames = original.problemData.Dataset.DoubleVariables.ToList();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ExtendedHeatMap(this, cloner);
     }
 
@@ -143,11 +163,4 @@
     }
 
-    private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) {
-      BackgroundWorker worker = sender as BackgroundWorker;
-      if (!worker.CancellationPending && ProgressCalculation != null) {
-        ProgressCalculation(sender, e);
-      }
-    }
-
     private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
       BackgroundWorker worker = sender as BackgroundWorker;
@@ -164,5 +177,22 @@
     }
 
-    private class BackgroundWorkerInfo {
+    #region events
+    public delegate void ProgressCalculationHandler(object sender, ProgressChangedEventArgs e);
+    public event ProgressCalculationHandler ProgressCalculation;
+    protected void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) {
+      BackgroundWorker worker = sender as BackgroundWorker;
+      if (!worker.CancellationPending && ProgressCalculation != null) {
+        ProgressCalculation(sender, e);
+      }
+    }
+
+    public event EventHandler ProblemDataChanged;
+    protected virtual void OnProblemDataChanged() {
+      var handler = ProblemDataChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+    #endregion
+
+    protected class BackgroundWorkerInfo {
       public Dataset Dataset { get; set; }
       public string Calculator { get; set; }
