Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10905)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10908)
@@ -81,4 +81,5 @@
     <Compile Include="Implementations\PreprocessingDataTable.cs" />
     <Compile Include="Interfaces\IFilteredPreprocessingData.cs" />
+    <Compile Include="Implementations\CorrelationMatrixContent.cs" />
     <Compile Include="PreprocessingTransformator.cs" />
     <Compile Include="Utils\DataPreprocessingChangedEvent.cs" />
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/ChartLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/ChartLogic.cs	(revision 10905)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/ChartLogic.cs	(revision 10908)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -32,5 +32,5 @@
 
   public class ChartLogic : IChartLogic {
- 
+    private const int MAX_DISTINCT_VALUES_FOR_CLASSIFCATION = 20;
     private ITransactionalPreprocessingData preprocessingData;
 
@@ -63,6 +63,6 @@
     }
 
-    public List<double> GetVariableValues(string variableName) {
-      return preprocessingData.GetValues<double>(preprocessingData.GetColumnIndex(variableName)).ToList();
+    public IEnumerable<double> GetVariableValues(string variableName) {
+      return preprocessingData.GetValues<double>(preprocessingData.GetColumnIndex(variableName));
     }
 
@@ -74,4 +74,22 @@
         if (preprocessingData.IsType<double>(preprocessingData.GetColumnIndex(variableName)))
           doubleVariableNames.Add(variableName);
+      }
+
+      return doubleVariableNames;
+    }
+
+    public IEnumerable<string> GetVariableNamesForHistogramClassification() {
+      List<string> doubleVariableNames = new List<string>();
+
+      //only return variable names from type double
+      foreach (string variableName in preprocessingData.VariableNames)
+      {
+        int columnIndex           = preprocessingData.GetColumnIndex(variableName);
+        bool isDouble             = preprocessingData.IsType<double>(columnIndex);
+        double distinctValueCount = preprocessingData.GetValues<double>(columnIndex).GroupBy(x => x).Count();
+        bool distinctValuesOk     = distinctValueCount <= MAX_DISTINCT_VALUES_FOR_CLASSIFCATION;
+
+        if (isDouble && distinctValuesOk)
+              doubleVariableNames.Add(variableName);
       }
 
@@ -146,6 +164,6 @@
       
 
-      List<double> xValues = GetVariableValues(variableNameX);
-      List<double> yValues = GetVariableValues(variableNameY);
+      List<double> xValues = GetVariableValues(variableNameX).ToList();
+      List<double> yValues = GetVariableValues(variableNameY).ToList();
 
       List<Point2D<double>> points = new List<Point2D<double>>();
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/CorrelationMatrixContent.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/CorrelationMatrixContent.cs	(revision 10908)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/CorrelationMatrixContent.cs	(revision 10908)
@@ -0,0 +1,51 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.DataPreprocessing {
+
+  [Item("Feature Correlation Matrix", "Represents the feature correlation matrix.")]
+  public class CorrelationMatrixContent : Item, IViewShortcut
+  {
+    public DataAnalysisProblemData ProblemData { get; set; }
+
+    public CorrelationMatrixContent(DataAnalysisProblemData data) {
+      ProblemData = data;
+    }
+
+    public CorrelationMatrixContent(CorrelationMatrixContent original, Cloner cloner)
+      : base(original, cloner) {
+  
+    }
+  
+    public static new Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.Gradient; }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new CorrelationMatrixContent(this, cloner);
+    }
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/FilterLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/FilterLogic.cs	(revision 10905)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/FilterLogic.cs	(revision 10908)
@@ -27,5 +27,4 @@
 namespace HeuristicLab.DataPreprocessing {
   public class FilterLogic : IFilterLogic {
-
     private IFilteredPreprocessingData preprocessingData;
 
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramContent.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramContent.cs	(revision 10905)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramContent.cs	(revision 10908)
@@ -36,5 +36,4 @@
     public HistogramContent(HistogramContent content, Cloner cloner)
       : base(content, cloner) {
-
     }
 
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IChartLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IChartLogic.cs	(revision 10905)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IChartLogic.cs	(revision 10908)
@@ -50,5 +50,7 @@
 
     IEnumerable<string> GetVariableNames();
-    List<double> GetVariableValues(string variableName);
+    IEnumerable<string> GetVariableNamesForHistogramClassification();
+
+    IEnumerable<double> GetVariableValues(string variableName);
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/ProblemDataCreator.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/ProblemDataCreator.cs	(revision 10905)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/ProblemDataCreator.cs	(revision 10908)
@@ -26,5 +26,5 @@
 
 namespace HeuristicLab.DataPreprocessing {
-  internal class ProblemDataCreator {
+  public class ProblemDataCreator {
 
     private readonly IPreprocessingContext context;
