Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs	(revision 10998)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs	(revision 10999)
@@ -46,5 +46,5 @@
     private const string DEFAULT_CHART_TITLE = "Chart";
     private const int FIXED_CHART_SIZE = 300;
-    private const int MAX_TABLE_ROWS = 3;
+    private const int MAX_TABLE_AUTO_SIZE_ROWS = 3;
 
     public IEnumerable<double> Classification { get; set; }
@@ -326,5 +326,5 @@
       for (int x = 0; x < columns; x++) {
 
-        if (rows <= MAX_TABLE_ROWS)
+        if (rows <= MAX_TABLE_AUTO_SIZE_ROWS)
           tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100 / columns));
         else
@@ -335,5 +335,5 @@
           if (x == 0) {
             // fixed chart size when there are more than 3 tables
-            if (rows > MAX_TABLE_ROWS)
+            if (rows > MAX_TABLE_AUTO_SIZE_ROWS)
               tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, FIXED_CHART_SIZE));
             else
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/DataCompletenessChartContent.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/DataCompletenessChartContent.cs	(revision 10998)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/DataCompletenessChartContent.cs	(revision 10999)
@@ -1,54 +1,29 @@
-﻿using HeuristicLab.Common;
+﻿using System.Drawing;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
 
-namespace HeuristicLab.DataPreprocessing
-{
+namespace HeuristicLab.DataPreprocessing {
   [Item("DataCompletenessChart", "Represents a datacompleteness chart.")]
-  public class DataCompletenessChartContent : Item, IViewChartShortcut
-  {
-    private readonly DataGridLogic dataGridLogic;
-    private readonly SearchLogic searchLogic;
+  public class DataCompletenessChartContent : Item, IViewChartShortcut {
 
-    public DataCompletenessChartContent(DataGridLogic dataGridLogic, SearchLogic searchLogic)
-    {
-      this.dataGridLogic = dataGridLogic;
-      this.searchLogic = searchLogic;
+    public static new Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.EditBrightnessContrast; }
+    }
+
+    public IDataGridLogic DataGridLogic { get; private set; }
+    public ISearchLogic SearchLogic { get; private set; }
+
+    public DataCompletenessChartContent(DataGridLogic dataGridLogic, SearchLogic searchLogic) {
+      DataGridLogic = dataGridLogic;
+      SearchLogic = searchLogic;
     }
 
     public DataCompletenessChartContent(DataCompletenessChartContent content, Cloner cloner)
-      : base(content, cloner)
-    {
-      this.dataGridLogic = content.dataGridLogic;
-      this.searchLogic = content.searchLogic;
+      : base(content, cloner) {
+      DataGridLogic = content.DataGridLogic;
+      SearchLogic = content.SearchLogic;
     }
 
-    public IDataGridLogic DataGridLogic
-    {
-      get
-      {
-        return dataGridLogic;
-      }
-    }
-
-    public ISearchLogic SearchLogic
-    {
-      get
-      {
-        return searchLogic;
-      }
-    }
-
-    public static new Image StaticItemImage
-    {
-      get { return HeuristicLab.Common.Resources.VSImageLibrary.EditBrightnessContrast; }
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner)
-    {
+    public override IDeepCloneable Clone(Cloner cloner) {
       return new DataCompletenessChartContent(this, cloner);
     }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/DataGridContent.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/DataGridContent.cs	(revision 10998)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/DataGridContent.cs	(revision 10999)
@@ -31,11 +31,11 @@
   public class DataGridContent : Item, IViewShortcut, IDataGridContent {
 
+    public static new Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.Table; }
+    }
+
     public IManipulationLogic ManipulationLogic { get; private set; }
     public IDataGridLogic DataGridLogic { get; private set; }
     public IFilterLogic FilterLogic { get; private set; }
-
-    public static new Image StaticItemImage {
-      get { return HeuristicLab.Common.Resources.VSImageLibrary.Table; }
-    }
 
     public int Rows {
@@ -98,5 +98,4 @@
 
     }
-
     public override IDeepCloneable Clone(Cloner cloner) {
       return new DataGridContent(this, cloner);
@@ -115,5 +114,4 @@
       remove { DataGridLogic.Changed -= value; }
     }
-
 
 
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/DataGridLogic.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/DataGridLogic.cs	(revision 10998)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/DataGridLogic.cs	(revision 10999)
@@ -29,19 +29,10 @@
   public class DataGridLogic : IDataGridLogic {
 
-    private ITransactionalPreprocessingData preprocessingData;
+    private ITransactionalPreprocessingData PreprocessingData { get; private set; }
     private IEnumerable<string> rowNames;
-
-    public DataGridLogic(ITransactionalPreprocessingData preprocessingData) {
-      this.preprocessingData = preprocessingData;
-      createRowNames();
-    }
-
-    private void createRowNames() {
-      rowNames = Enumerable.Range(1, Rows).Select(n => n.ToString());
-    }
 
     public int Rows {
       get {
-        return preprocessingData.Rows;
+        return PreprocessingData.Rows;
       }
     }
@@ -49,5 +40,5 @@
     public int Columns {
       get {
-        return preprocessingData.Columns;
+        return PreprocessingData.Columns;
       }
     }
@@ -55,5 +46,5 @@
     public IEnumerable<string> ColumnNames {
       get {
-        return preprocessingData.VariableNames;
+        return PreprocessingData.VariableNames;
       }
     }
@@ -65,6 +56,17 @@
     }
 
+    public DataGridLogic(ITransactionalPreprocessingData preprocessingData) {
+      PreprocessingData = preprocessingData;
+      createRowNames();
+    }
+
+    private void createRowNames() {
+      rowNames = Enumerable.Range(1, Rows).Select(n => n.ToString());
+    }
+
+
+
     public bool Validate(string value, out string errorMessage, int columnIndex) {
-      if (columnIndex < 0 || columnIndex > preprocessingData.VariableNames.Count()) {
+      if (columnIndex < 0 || columnIndex > PreprocessingData.VariableNames.Count()) {
         throw new ArgumentOutOfRangeException("column index is out of range");
       }
@@ -72,5 +74,5 @@
       bool valid = false;
       errorMessage = string.Empty;
-      if (preprocessingData.IsType<double>(columnIndex)) {
+      if (PreprocessingData.IsType<double>(columnIndex)) {
         double val;
         valid = double.TryParse(value, out val);
@@ -78,10 +80,10 @@
           errorMessage = "Invalid Value (Valid Value Format: \"" + FormatPatterns.GetDoubleFormatPattern() + "\")";
         }
-      } else if (preprocessingData.IsType<string>(columnIndex)) {
+      } else if (PreprocessingData.IsType<string>(columnIndex)) {
         valid = value != null;
         if (!valid) {
           errorMessage = "Invalid Value (string must not be null)";
         }
-      } else if (preprocessingData.IsType<DateTime>(columnIndex)) {
+      } else if (PreprocessingData.IsType<DateTime>(columnIndex)) {
         DateTime date;
         valid = DateTime.TryParse(value, out date);
@@ -97,17 +99,17 @@
 
     public string GetValue(int columnIndex, int rowIndex) {
-      return preprocessingData.GetCellAsString(columnIndex, rowIndex);
+      return PreprocessingData.GetCellAsString(columnIndex, rowIndex);
     }
 
     public bool SetValue(string value, int columnIndex, int rowIndex) {
       bool valid = false;
-      if (preprocessingData.IsType<double>(columnIndex)) {
+      if (PreprocessingData.IsType<double>(columnIndex)) {
         double val;
         valid = double.TryParse(value, out val);
         SetValueIfValid(columnIndex, rowIndex, valid, val);
-      } else if (preprocessingData.IsType<string>(columnIndex)) {
+      } else if (PreprocessingData.IsType<string>(columnIndex)) {
         valid = value != null;
         SetValueIfValid(columnIndex, rowIndex, valid, value);
-      } else if (preprocessingData.IsType<DateTime>(columnIndex)) {
+      } else if (PreprocessingData.IsType<DateTime>(columnIndex)) {
         DateTime date;
         valid = DateTime.TryParse(value, out date);
@@ -121,12 +123,12 @@
     private void SetValueIfValid<T>(int columnIndex, int rowIndex, bool valid, T value) {
       if (valid) {
-        preprocessingData.SetCell<T>(columnIndex, rowIndex, value);
+        PreprocessingData.SetCell<T>(columnIndex, rowIndex, value);
       }
     }
 
     public void DeleteRow(List<int> rows) {
-      preprocessingData.InTransaction(() => {
+      PreprocessingData.InTransaction(() => {
         foreach (int rowIndex in rows) {
-          preprocessingData.DeleteRow(rowIndex);
+          PreprocessingData.DeleteRow(rowIndex);
         }
       });
@@ -135,27 +137,27 @@
 
     public event DataPreprocessingChangedEventHandler Changed {
-      add { preprocessingData.Changed += value; }
-      remove { preprocessingData.Changed -= value; }
+      add { PreprocessingData.Changed += value; }
+      remove { PreprocessingData.Changed -= value; }
     }
 
     public bool AreAllStringColumns(IEnumerable<int> columnIndices) {
-      return columnIndices.All(x => preprocessingData.IsType<string>(x));
+      return columnIndices.All(x => PreprocessingData.IsType<string>(x));
     }
 
 
     public void SetSelection(IDictionary<int, IList<int>> selection) {
-      preprocessingData.Selection = selection;
+      PreprocessingData.Selection = selection;
     }
 
     public IDictionary<int, IList<int>> GetSelection() {
-      return preprocessingData.Selection;
+      return PreprocessingData.Selection;
     }
     public void ClearSelection() {
-      preprocessingData.ClearSelection();
+      PreprocessingData.ClearSelection();
     }
 
     public event EventHandler SelectionChanged {
-      add { preprocessingData.SelectionChanged += value; }
-      remove { preprocessingData.SelectionChanged -= value; }
+      add { PreprocessingData.SelectionChanged += value; }
+      remove { PreprocessingData.SelectionChanged -= value; }
     }
 
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/Filter/ComparisonFilter.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/Filter/ComparisonFilter.cs	(revision 10998)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/Filter/ComparisonFilter.cs	(revision 10999)
@@ -31,28 +31,4 @@
   public class ComparisonFilter : ComparisonConstraint, IFilter {
 
-    
-
-    protected ComparisonFilter(bool deserializing) : base(deserializing) {
-    
-    }
-
-    protected ComparisonFilter(ComparisonFilter original, Cloner cloner)
-      : base(original, cloner) {
-      constraintColumn = original.constraintColumn;
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new ComparisonFilter(this, cloner);
-    }
-
-    public ComparisonFilter() : base() { }
-    public ComparisonFilter(IPreprocessingData constrainedValue, ConstraintOperation constraintOperation, object constraintData)
-      : base(constrainedValue, constraintOperation, constraintData) {
-    }
-
-    public ComparisonFilter(IPreprocessingData constrainedValue, ConstraintOperation constraintOperation, object constraintData, bool active)
-      : base(constrainedValue, constraintOperation, constraintData, active) {
-    }
-
-
     public override string ItemName {
       get { return "ComparisonFilter"; }
@@ -77,4 +53,22 @@
     }
 
+    public ComparisonFilter() : base() { }
+    protected ComparisonFilter(bool deserializing) : base(deserializing) { }
+
+    public ComparisonFilter(IPreprocessingData constrainedValue, ConstraintOperation constraintOperation, object constraintData)
+      : base(constrainedValue, constraintOperation, constraintData) {
+    }
+
+    public ComparisonFilter(IPreprocessingData constrainedValue, ConstraintOperation constraintOperation, object constraintData, bool active)
+      : base(constrainedValue, constraintOperation, constraintData, active) {
+    }
+
+    protected ComparisonFilter(ComparisonFilter original, Cloner cloner)
+      : base(original, cloner) {
+      constraintColumn = original.constraintColumn;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ComparisonFilter(this, cloner);
+    }
 
     private int constraintColumn;
@@ -92,5 +86,4 @@
       }
     }
-
 
     public new bool[] Check() {
@@ -121,11 +114,4 @@
     }
 
-    public event EventHandler ConstraintColumnChanged;
-    protected virtual void OnConstraintColumnChanged() {
-      EventHandler handler = ConstraintColumnChanged;
-      if (handler != null)
-        handler(this, EventArgs.Empty);
-    }
-
     public override string ToString() {
       string s = string.Empty;
@@ -144,4 +130,11 @@
       return s;
     }
+
+    public event EventHandler ConstraintColumnChanged;
+    protected virtual void OnConstraintColumnChanged() {
+      EventHandler handler = ConstraintColumnChanged;
+      if (handler != null)
+        handler(this, EventArgs.Empty);
+    }
   }
 }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/FilterContent.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/FilterContent.cs	(revision 10998)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/FilterContent.cs	(revision 10999)
@@ -29,20 +29,11 @@
   public class FilterContent : Item, IViewShortcut {
 
-    private ICheckedItemCollection<IFilter> filters = new CheckedItemCollection<IFilter>();
-
     public static new Image StaticItemImage {
       get { return HeuristicLab.Common.Resources.VSImageLibrary.Filter; }
     }
 
-    private readonly IFilterLogic filterLogic;
+    private ICheckedItemCollection<IFilter> filters = new CheckedItemCollection<IFilter>();
 
-    public bool isAndCombination = true;
-
-
-    public IFilterLogic FilterLogic {
-      get {
-        return filterLogic;
-      }
-    }
+    public IFilterLogic FilterLogic { get; private set; }
 
     public ICheckedItemCollection<IFilter> Filters {
@@ -55,4 +46,5 @@
     }
 
+    private bool isAndCombination = true;
     public bool IsAndCombination {
       get {
@@ -64,6 +56,6 @@
     }
 
-    public FilterContent(IFilterLogic theFilterLogic) {
-      filterLogic = theFilterLogic;
+    public FilterContent(IFilterLogic filterLogic) {
+      FilterLogic = filterLogic;
     }
 
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/FilterLogic.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/FilterLogic.cs	(revision 10998)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/FilterLogic.cs	(revision 10999)
@@ -27,8 +27,15 @@
 namespace HeuristicLab.DataPreprocessing {
   public class FilterLogic : IFilterLogic {
-    private IFilteredPreprocessingData preprocessingData;
+
+    public IFilteredPreprocessingData PreprocessingData { get; private set; }
+
+    public bool IsFiltered {
+      get {
+        return PreprocessingData.IsFiltered;
+      }
+    }
 
     public FilterLogic(IFilteredPreprocessingData preprocessingData) {
-      this.preprocessingData = preprocessingData;
+      PreprocessingData = preprocessingData;
     }
 
@@ -37,5 +44,5 @@
 
       if (activeFilters.Count == 0) {
-        return CreateBoolArray(preprocessingData.Rows, false);
+        return CreateBoolArray(PreprocessingData.Rows, false);
       }
       return GetActiveFilterResult(activeFilters, isAndCombination);
@@ -43,5 +50,5 @@
 
     private bool[] GetActiveFilterResult(IList<IFilter> activeFilters, bool isAndCombination) {
-      bool[] result = CreateBoolArray(preprocessingData.Rows, !isAndCombination);
+      bool[] result = CreateBoolArray(PreprocessingData.Rows, !isAndCombination);
 
       foreach (IFilter filter in activeFilters) {
@@ -58,8 +65,8 @@
       if (activeFilters.Count > 0) {
         var result = GetActiveFilterResult(activeFilters, isAndCombination);
-        preprocessingData.SetFilter(result);
+        PreprocessingData.SetFilter(result);
         return result;
       } else {
-        return CreateBoolArray(preprocessingData.Rows, false);
+        return CreateBoolArray(PreprocessingData.Rows, false);
       }
     }
@@ -74,25 +81,15 @@
 
     public void Apply(IList<IFilter> filters, bool isAndCombination) {
-      preprocessingData.PersistFilter();
+      PreprocessingData.PersistFilter();
       Reset();
     }
 
     public void Reset() {
-      preprocessingData.ResetFilter();
-    }
-
-    public bool IsFiltered {
-      get {
-        return preprocessingData.IsFiltered;
-      }
-    }
-
-    public IPreprocessingData PreprocessingData {
-      get { return preprocessingData; }
+      PreprocessingData.ResetFilter();
     }
 
     public event EventHandler FilterChanged {
-      add { preprocessingData.FilterChanged += value; }
-      remove { preprocessingData.FilterChanged -= value; }
+      add { PreprocessingData.FilterChanged += value; }
+      remove { PreprocessingData.FilterChanged -= value; }
     }
   }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/FilteredPreprocessingData.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/FilteredPreprocessingData.cs	(revision 10998)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/FilteredPreprocessingData.cs	(revision 10999)
@@ -13,7 +13,50 @@
     private ITransactionalPreprocessingData filteredData;
 
+    public IntRange TrainingPartition {
+      get { return originalData.TrainingPartition; }
+    }
+
+    public IntRange TestPartition {
+      get { return originalData.TestPartition; }
+    }
+
+    public IList<ITransformation> Transformations {
+      get { return originalData.Transformations; }
+    }
+
+    public IEnumerable<string> VariableNames {
+      get { return ActiveData.VariableNames; }
+    }
+
     public IDictionary<int, IList<int>> Selection {
       get { return originalData.Selection; }
       set { originalData.Selection = value; }
+    }
+
+    public int Columns {
+      get { return ActiveData.Columns; }
+    }
+
+    public int Rows {
+      get { return ActiveData.Rows; }
+    }
+
+    public ITransactionalPreprocessingData ActiveData {
+      get { return IsFiltered ? filteredData : originalData; }
+    }
+
+    public bool IsUndoAvailable {
+      get { return IsFiltered ? false : originalData.IsUndoAvailable; }
+    }
+
+    public bool IsFiltered {
+      get { return filteredData != null; }
+    }
+
+
+    public FilteredPreprocessingData(ITransactionalPreprocessingData preporcessingData)
+      : base() {
+      originalData = preporcessingData;
+      filteredData = null;
     }
 
@@ -23,11 +66,4 @@
       filteredData = original.filteredData;
     }
-
-    public FilteredPreprocessingData(ITransactionalPreprocessingData preporcessingData)
-      : base() {
-      originalData = preporcessingData;
-      filteredData = null;
-    }
-
     public override IDeepCloneable Clone(Cloner cloner) {
       return new FilteredPreprocessingData(this, cloner);
@@ -91,20 +127,4 @@
     }
 
-    public IntRange TrainingPartition {
-      get { return originalData.TrainingPartition; }
-    }
-
-    public IntRange TestPartition {
-      get { return originalData.TestPartition; }
-    }
-
-    public IList<ITransformation> Transformations {
-      get { return originalData.Transformations; }
-    }
-
-    public IEnumerable<string> VariableNames {
-      get { return ActiveData.VariableNames; }
-    }
-
     public string GetVariableName(int columnIndex) {
       return ActiveData.GetVariableName(columnIndex);
@@ -117,12 +137,4 @@
     public bool IsType<T>(int columnIndex) {
       return originalData.IsType<T>(columnIndex);
-    }
-
-    public int Columns {
-      get { return ActiveData.Columns; }
-    }
-
-    public int Rows {
-      get { return ActiveData.Rows; }
     }
 
@@ -171,16 +183,33 @@
     }
 
-    public ITransactionalPreprocessingData ActiveData {
-      get { return IsFiltered ? filteredData : originalData; }
-    }
-
-
-    public bool IsUndoAvailable {
-      get { return IsFiltered ? false : originalData.IsUndoAvailable; }
-    }
-
-
-    public bool IsFiltered {
-      get { return filteredData != null; }
+    public void Undo() {
+      if (IsFiltered)
+        throw new InvalidOperationException("Undo not possible while data is filtered");
+
+      originalData.Undo();
+    }
+
+    public void InTransaction(Action action, DataPreprocessingChangedEventType type = DataPreprocessingChangedEventType.Any) {
+      if (IsFiltered)
+        throw new InvalidOperationException("Transaction not possible while data is filtered");
+      originalData.InTransaction(action, type);
+    }
+
+    public void BeginTransaction(DataPreprocessingChangedEventType type) {
+      if (IsFiltered)
+        throw new InvalidOperationException("Transaction not possible while data is filtered");
+      originalData.BeginTransaction(type);
+    }
+
+    public void EndTransaction() {
+      originalData.EndTransaction();
+    }
+
+    public IEnumerable<string> GetDoubleVariableNames() {
+      return originalData.GetDoubleVariableNames();
+    }
+
+    public void ClearSelection() {
+      originalData.ClearSelection();
     }
 
@@ -190,36 +219,4 @@
     }
 
-
-    public void Undo() {
-      if (IsFiltered)
-        throw new InvalidOperationException("Undo not possible while data is filtered");
-
-      originalData.Undo();
-    }
-
-    public void InTransaction(Action action, DataPreprocessingChangedEventType type = DataPreprocessingChangedEventType.Any) {
-      if (IsFiltered)
-        throw new InvalidOperationException("Transaction not possible while data is filtered");
-      originalData.InTransaction(action, type);
-    }
-
-    public void BeginTransaction(DataPreprocessingChangedEventType type) {
-      if (IsFiltered)
-        throw new InvalidOperationException("Transaction not possible while data is filtered");
-      originalData.BeginTransaction(type);
-    }
-
-    public void EndTransaction() {
-      originalData.EndTransaction();
-    }
-
-    public event EventHandler FilterChanged;
-
-    #region IPreprocessingData Members
-
-    public void ClearSelection() {
-      originalData.ClearSelection();
-    }
-
     public event EventHandler SelectionChanged {
       add { originalData.SelectionChanged += value; }
@@ -227,14 +224,5 @@
     }
 
-    #endregion
-
-    #region IPreprocessingData Members
-
-
-    public IEnumerable<string> GetDoubleVariableNames() {
-      return originalData.GetDoubleVariableNames();
-    }
-
-    #endregion
+    public event EventHandler FilterChanged;
   }
 }
