Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.Designer.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.Designer.cs	(revision 15284)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.Designer.cs	(revision 15285)
@@ -54,5 +54,4 @@
       this.mostCommonToolStripMenuItem_Column = new System.Windows.Forms.ToolStripMenuItem();
       this.interpolationToolStripMenuItem_Column = new System.Windows.Forms.ToolStripMenuItem();
-      this.smoothingToolStripMenuItem_Column = new System.Windows.Forms.ToolStripMenuItem();
       this.replaceValueOverSelectionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       this.averageToolStripMenuItem_Selection = new System.Windows.Forms.ToolStripMenuItem();
@@ -63,11 +62,13 @@
       this.btnReplace = new System.Windows.Forms.Button();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.checkInputsTargetButton = new System.Windows.Forms.Button();
-      this.uncheckAllButton = new System.Windows.Forms.Button();
-      this.checkAllButton = new System.Windows.Forms.Button();
+      this.shuffleWithinPartitionsCheckBox = new System.Windows.Forms.CheckBox();
       this.addRowButton = new System.Windows.Forms.Button();
       this.addColumnButton = new System.Windows.Forms.Button();
       this.renameColumnsButton = new System.Windows.Forms.Button();
       this.showVariablesGroupBox = new System.Windows.Forms.GroupBox();
+      this.shuffleAllButton = new System.Windows.Forms.Button();
+      this.checkInputsTargetButton = new System.Windows.Forms.Button();
+      this.uncheckAllButton = new System.Windows.Forms.Button();
+      this.checkAllButton = new System.Windows.Forms.Button();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.contextMenuCell.SuspendLayout();
@@ -127,6 +128,5 @@
             this.randomToolStripMenuItem_Column,
             this.mostCommonToolStripMenuItem_Column,
-            this.interpolationToolStripMenuItem_Column,
-            this.smoothingToolStripMenuItem_Column});
+            this.interpolationToolStripMenuItem_Column});
       this.replaceValueOverColumnToolStripMenuItem.Name = "replaceValueOverColumnToolStripMenuItem";
       this.replaceValueOverColumnToolStripMenuItem.Size = new System.Drawing.Size(223, 22);
@@ -167,11 +167,4 @@
       this.interpolationToolStripMenuItem_Column.Text = "Interpolation";
       this.interpolationToolStripMenuItem_Column.Click += new System.EventHandler(this.ReplaceWithInterpolation_Column_Click);
-      // 
-      // smoothingToolStripMenuItem_Column
-      // 
-      this.smoothingToolStripMenuItem_Column.Name = "smoothingToolStripMenuItem_Column";
-      this.smoothingToolStripMenuItem_Column.Size = new System.Drawing.Size(155, 22);
-      this.smoothingToolStripMenuItem_Column.Text = "Smoothing";
-      this.smoothingToolStripMenuItem_Column.Click += new System.EventHandler(this.ReplaceWithSmoothing_Selection_Click);
       // 
       // replaceValueOverSelectionToolStripMenuItem
@@ -236,4 +229,68 @@
       this.btnReplace.Click += new System.EventHandler(this.btnReplace_Click);
       // 
+      // shuffleWithinPartitionsCheckBox
+      // 
+      this.shuffleWithinPartitionsCheckBox.AutoSize = true;
+      this.shuffleWithinPartitionsCheckBox.Location = new System.Drawing.Point(444, 30);
+      this.shuffleWithinPartitionsCheckBox.Name = "shuffleWithinPartitionsCheckBox";
+      this.shuffleWithinPartitionsCheckBox.Size = new System.Drawing.Size(102, 17);
+      this.shuffleWithinPartitionsCheckBox.TabIndex = 20;
+      this.shuffleWithinPartitionsCheckBox.Text = "Within Partitions";
+      this.toolTip.SetToolTip(this.shuffleWithinPartitionsCheckBox, "If checked, the Training and Test partitions are shuffled separately. Otherwise a" +
+        "ll data is shuffled.");
+      this.shuffleWithinPartitionsCheckBox.UseVisualStyleBackColor = true;
+      // 
+      // addRowButton
+      // 
+      this.addRowButton.Location = new System.Drawing.Point(338, 26);
+      this.addRowButton.Name = "addRowButton";
+      this.addRowButton.Size = new System.Drawing.Size(83, 23);
+      this.addRowButton.TabIndex = 10;
+      this.addRowButton.Text = "Add Datarow";
+      this.addRowButton.UseVisualStyleBackColor = true;
+      this.addRowButton.Click += new System.EventHandler(this.addRowButton_Click);
+      // 
+      // addColumnButton
+      // 
+      this.addColumnButton.Location = new System.Drawing.Point(338, 0);
+      this.addColumnButton.Name = "addColumnButton";
+      this.addColumnButton.Size = new System.Drawing.Size(83, 23);
+      this.addColumnButton.TabIndex = 10;
+      this.addColumnButton.Text = "Add Variable";
+      this.addColumnButton.UseVisualStyleBackColor = true;
+      this.addColumnButton.Click += new System.EventHandler(this.addColumnButton_Click);
+      // 
+      // renameColumnsButton
+      // 
+      this.renameColumnsButton.Location = new System.Drawing.Point(228, 26);
+      this.renameColumnsButton.Name = "renameColumnsButton";
+      this.renameColumnsButton.Size = new System.Drawing.Size(104, 23);
+      this.renameColumnsButton.TabIndex = 11;
+      this.renameColumnsButton.Text = "Rename Variables";
+      this.renameColumnsButton.UseVisualStyleBackColor = true;
+      this.renameColumnsButton.Click += new System.EventHandler(this.renameColumnsButton_Click);
+      // 
+      // showVariablesGroupBox
+      // 
+      this.showVariablesGroupBox.Controls.Add(this.checkInputsTargetButton);
+      this.showVariablesGroupBox.Controls.Add(this.uncheckAllButton);
+      this.showVariablesGroupBox.Controls.Add(this.checkAllButton);
+      this.showVariablesGroupBox.Location = new System.Drawing.Point(564, 0);
+      this.showVariablesGroupBox.Name = "showVariablesGroupBox";
+      this.showVariablesGroupBox.Size = new System.Drawing.Size(97, 49);
+      this.showVariablesGroupBox.TabIndex = 17;
+      this.showVariablesGroupBox.TabStop = false;
+      this.showVariablesGroupBox.Text = "Show Variables";
+      // 
+      // shuffleAllButton
+      // 
+      this.shuffleAllButton.Location = new System.Drawing.Point(444, 0);
+      this.shuffleAllButton.Name = "shuffleAllButton";
+      this.shuffleAllButton.Size = new System.Drawing.Size(102, 23);
+      this.shuffleAllButton.TabIndex = 19;
+      this.shuffleAllButton.Text = "Shuffle";
+      this.shuffleAllButton.UseVisualStyleBackColor = true;
+      this.shuffleAllButton.Click += new System.EventHandler(this.shuffleAllButton_Click);
+      // 
       // checkInputsTargetButton
       // 
@@ -269,50 +326,10 @@
       this.checkAllButton.Click += new System.EventHandler(this.checkAllButton_Click);
       // 
-      // addRowButton
-      // 
-      this.addRowButton.Location = new System.Drawing.Point(338, 26);
-      this.addRowButton.Name = "addRowButton";
-      this.addRowButton.Size = new System.Drawing.Size(83, 23);
-      this.addRowButton.TabIndex = 10;
-      this.addRowButton.Text = "Add Datarow";
-      this.addRowButton.UseVisualStyleBackColor = true;
-      this.addRowButton.Click += new System.EventHandler(this.addRowButton_Click);
-      // 
-      // addColumnButton
-      // 
-      this.addColumnButton.Location = new System.Drawing.Point(338, 0);
-      this.addColumnButton.Name = "addColumnButton";
-      this.addColumnButton.Size = new System.Drawing.Size(83, 23);
-      this.addColumnButton.TabIndex = 10;
-      this.addColumnButton.Text = "Add Variable";
-      this.addColumnButton.UseVisualStyleBackColor = true;
-      this.addColumnButton.Click += new System.EventHandler(this.addColumnButton_Click);
-      // 
-      // renameColumnsButton
-      // 
-      this.renameColumnsButton.Location = new System.Drawing.Point(228, 26);
-      this.renameColumnsButton.Name = "renameColumnsButton";
-      this.renameColumnsButton.Size = new System.Drawing.Size(104, 23);
-      this.renameColumnsButton.TabIndex = 11;
-      this.renameColumnsButton.Text = "Rename Variables";
-      this.renameColumnsButton.UseVisualStyleBackColor = true;
-      this.renameColumnsButton.Click += new System.EventHandler(this.renameColumnsButton_Click);
-      // 
-      // showVariablesGroupBox
-      // 
-      this.showVariablesGroupBox.Controls.Add(this.checkInputsTargetButton);
-      this.showVariablesGroupBox.Controls.Add(this.uncheckAllButton);
-      this.showVariablesGroupBox.Controls.Add(this.checkAllButton);
-      this.showVariablesGroupBox.Location = new System.Drawing.Point(448, 0);
-      this.showVariablesGroupBox.Name = "showVariablesGroupBox";
-      this.showVariablesGroupBox.Size = new System.Drawing.Size(97, 49);
-      this.showVariablesGroupBox.TabIndex = 17;
-      this.showVariablesGroupBox.TabStop = false;
-      this.showVariablesGroupBox.Text = "Show Variables";
-      // 
       // DataGridContentView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.shuffleWithinPartitionsCheckBox);
+      this.Controls.Add(this.shuffleAllButton);
       this.Controls.Add(this.showVariablesGroupBox);
       this.Controls.Add(this.renameColumnsButton);
@@ -335,4 +352,6 @@
       this.Controls.SetChildIndex(this.columnsTextBox, 0);
       this.Controls.SetChildIndex(this.showVariablesGroupBox, 0);
+      this.Controls.SetChildIndex(this.shuffleAllButton, 0);
+      this.Controls.SetChildIndex(this.shuffleWithinPartitionsCheckBox, 0);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.contextMenuCell.ResumeLayout(false);
@@ -361,5 +380,4 @@
     private System.Windows.Forms.Button btnReplace;
     private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.ToolStripMenuItem smoothingToolStripMenuItem_Column;
     private System.Windows.Forms.Button addRowButton;
     private System.Windows.Forms.Button addColumnButton;
@@ -369,4 +387,6 @@
     private System.Windows.Forms.Button uncheckAllButton;
     private System.Windows.Forms.Button checkAllButton;
+    private System.Windows.Forms.Button shuffleAllButton;
+    private System.Windows.Forms.CheckBox shuffleWithinPartitionsCheckBox;
   }
 }
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs	(revision 15284)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs	(revision 15285)
@@ -248,6 +248,6 @@
     }
 
-    private void btnApplySort_Click(object sender, System.EventArgs e) {
-      Content.ManipulationLogic.ReOrderToIndices(virtualRowIndices);
+    private void btnApplySort_Click(object sender, EventArgs e) {
+      Content.ReOrderToIndices(virtualRowIndices);
       OnContentChanged();
     }
@@ -490,20 +490,20 @@
           switch (findAndReplaceDialog.GetReplaceAction()) {
             case ReplaceAction.Value:
-              Content.ManipulationLogic.ReplaceIndicesByValue(cells, findAndReplaceDialog.GetReplaceText());
+              Content.ReplaceIndicesByString(cells, findAndReplaceDialog.GetReplaceText());
               break;
             case ReplaceAction.Average:
-              Content.ManipulationLogic.ReplaceIndicesByAverageValue(cells, false);
+              Content.ReplaceIndicesByMean(cells, false);
               break;
             case ReplaceAction.Median:
-              Content.ManipulationLogic.ReplaceIndicesByMedianValue(cells, false);
+              Content.ReplaceIndicesByMedianValue(cells, false);
               break;
             case ReplaceAction.Random:
-              Content.ManipulationLogic.ReplaceIndicesByRandomValue(cells, false);
+              Content.ReplaceIndicesByRandomValue(cells, false);
               break;
             case ReplaceAction.MostCommon:
-              Content.ManipulationLogic.ReplaceIndicesByMostCommonValue(cells, false);
+              Content.ReplaceIndicesByMode(cells, false);
               break;
             case ReplaceAction.Interpolation:
-              Content.ManipulationLogic.ReplaceIndicesByLinearInterpolationOfNeighbours(cells);
+              Content.ReplaceIndicesByLinearInterpolationOfNeighbours(cells);
               break;
           }
@@ -523,5 +523,4 @@
 
     #endregion FindAndReplaceDialog
-
     private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
       if (Content == null) return;
@@ -550,9 +549,4 @@
             randomToolStripMenuItem_Selection.Enabled = !Content.PreprocessingData.AreAllStringColumns(columnIndices);
 
-          smoothingToolStripMenuItem_Column.Enabled =
-            interpolationToolStripMenuItem_Column.Enabled = !dataGridView.SelectedCells.Contains(dataGridView[e.ColumnIndex, 0])
-            && !dataGridView.SelectedCells.Contains(dataGridView[e.ColumnIndex, Content.Rows - 1])
-            && !Content.PreprocessingData.AreAllStringColumns(columnIndices);
-
           replaceValueOverColumnToolStripMenuItem.Visible = true;
           contextMenuCell.Show(MousePosition);
@@ -598,8 +592,7 @@
       }
 
-      foreach (var selectedCell in dataGridView.SelectedCells) {
-        var cell = (DataGridViewCell)selectedCell;
+      foreach (DataGridViewCell cell in dataGridView.SelectedCells) {
         if (!selectedCells.ContainsKey(cell.ColumnIndex))
-          selectedCells.Add(cell.ColumnIndex, new List<int>(1024));
+          selectedCells.Add(cell.ColumnIndex, new List<int>());
         selectedCells[cell.ColumnIndex].Add(cell.RowIndex);
       }
@@ -608,16 +601,8 @@
     }
 
-    private void StartReplacing() {
+    private void ReplaceTransaction(Action action) {
       SuspendRepaint();
-    }
-
-    private void StopReplacing() {
+      action();
       ResumeRepaint(true);
-    }
-
-    private void ReplaceTransaction(Action action) {
-      StartReplacing();
-      action();
-      StopReplacing();
     }
 
@@ -633,13 +618,12 @@
 
     #region ContextMenu Events
-
     private void ReplaceWithAverage_Column_Click(object sender, EventArgs e) {
       ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesByAverageValue(GetSelectedCells(), false);
+        Content.ReplaceIndicesByMean(GetSelectedCells(), false);
       });
     }
     private void ReplaceWithAverage_Selection_Click(object sender, EventArgs e) {
       ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesByAverageValue(GetSelectedCells(), true);
+        Content.ReplaceIndicesByMean(GetSelectedCells(), true);
       });
     }
@@ -647,10 +631,10 @@
     private void ReplaceWithMedian_Column_Click(object sender, EventArgs e) {
       ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesByMedianValue(GetSelectedCells(), false);
+        Content.ReplaceIndicesByMedianValue(GetSelectedCells(), false);
       });
     }
     private void ReplaceWithMedian_Selection_Click(object sender, EventArgs e) {
       ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesByMedianValue(GetSelectedCells(), true);
+        Content.ReplaceIndicesByMedianValue(GetSelectedCells(), true);
       });
     }
@@ -658,10 +642,10 @@
     private void ReplaceWithRandom_Column_Click(object sender, EventArgs e) {
       ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesByRandomValue(GetSelectedCells(), false);
+        Content.ReplaceIndicesByRandomValue(GetSelectedCells(), false);
       });
     }
     private void ReplaceWithRandom_Selection_Click(object sender, EventArgs e) {
       ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesByRandomValue(GetSelectedCells(), true);
+        Content.ReplaceIndicesByRandomValue(GetSelectedCells(), true);
       });
     }
@@ -669,10 +653,10 @@
     private void ReplaceWithMostCommon_Column_Click(object sender, EventArgs e) {
       ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesByMostCommonValue(GetSelectedCells(), false);
+        Content.ReplaceIndicesByMode(GetSelectedCells(), false);
       });
     }
     private void ReplaceWithMostCommon_Selection_Click(object sender, EventArgs e) {
       ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesByMostCommonValue(GetSelectedCells(), true);
+        Content.ReplaceIndicesByMode(GetSelectedCells(), true);
       });
     }
@@ -680,11 +664,5 @@
     private void ReplaceWithInterpolation_Column_Click(object sender, EventArgs e) {
       ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesByLinearInterpolationOfNeighbours(GetSelectedCells());
-      });
-    }
-
-    private void ReplaceWithSmoothing_Selection_Click(object sender, EventArgs e) {
-      ReplaceTransaction(() => {
-        Content.ManipulationLogic.ReplaceIndicesBySmoothing(GetSelectedCells());
+        Content.ReplaceIndicesByLinearInterpolationOfNeighbours(GetSelectedCells());
       });
     }
@@ -727,4 +705,8 @@
       }
     }
+
+    private void shuffleAllButton_Click(object sender, EventArgs e) {
+      Content.Shuffle(shuffleWithinPartitionsCheckBox.Checked);
+    }
   }
 }
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.cs	(revision 15284)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.cs	(revision 15285)
@@ -49,8 +49,7 @@
       if (Content != null) {
         var data = Content.Data;
-        var manipulationLogic = new ManipulationLogic(data);
 
         var viewShortcuts = new ItemList<IViewShortcut> {
-          new DataGridContent(data, manipulationLogic),
+          new DataGridContent(data),
           new StatisticsContent(data),
 
@@ -63,5 +62,5 @@
 
           new FilterContent(data),
-          new ManipulationContent(data, manipulationLogic),
+          new ManipulationContent(data),
           new TransformationContent(data)
         };
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.Designer.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.Designer.cs	(revision 15284)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.Designer.cs	(revision 15285)
@@ -62,14 +62,4 @@
       this.txtDeleteRowsInfo = new System.Windows.Forms.TextBox();
       this.label5 = new System.Windows.Forms.Label();
-      this.tabReplaceMissingValues = new System.Windows.Forms.TabPage();
-      this.txtReplaceValue = new System.Windows.Forms.TextBox();
-      this.cmbVariableNames = new System.Windows.Forms.ComboBox();
-      this.cmbReplaceWith = new System.Windows.Forms.ComboBox();
-      this.lblValueColon = new System.Windows.Forms.Label();
-      this.label8 = new System.Windows.Forms.Label();
-      this.label10 = new System.Windows.Forms.Label();
-      this.tabDataShuffle = new System.Windows.Forms.TabPage();
-      this.shuffleSeparatelyCheckbox = new System.Windows.Forms.CheckBox();
-      this.lblShuffleProperties = new System.Windows.Forms.Label();
       this.grpBoxPreview = new System.Windows.Forms.GroupBox();
       this.tabsPreview = new System.Windows.Forms.TabControl();
@@ -77,17 +67,13 @@
       this.lblPreviewInActive = new System.Windows.Forms.Label();
       this.tabPreviewDeleteColumnsInfo = new System.Windows.Forms.TabPage();
+      this.panel1 = new System.Windows.Forms.Panel();
       this.lblPreviewColumnsInfo = new System.Windows.Forms.Label();
       this.tabPreviewDeleteColumnsVariance = new System.Windows.Forms.TabPage();
+      this.panel2 = new System.Windows.Forms.Panel();
+      this.lblPreviewColumnsVariance = new System.Windows.Forms.Label();
       this.label12 = new System.Windows.Forms.Label();
-      this.lblPreviewColumnsVariance = new System.Windows.Forms.Label();
       this.tabPreviewDeleteRowsInfo = new System.Windows.Forms.TabPage();
       this.lblPreviewRowsInfo = new System.Windows.Forms.Label();
-      this.tabPreviewReplaceMissingValues = new System.Windows.Forms.TabPage();
-      this.lblPreviewReplaceMissingValues = new System.Windows.Forms.Label();
-      this.tabPreviewShuffle = new System.Windows.Forms.TabPage();
-      this.lblPreviewShuffle = new System.Windows.Forms.Label();
       this.label9 = new System.Windows.Forms.Label();
-      this.panel1 = new System.Windows.Forms.Panel();
-      this.panel2 = new System.Windows.Forms.Panel();
       this.grpBoxData.SuspendLayout();
       this.tabsData.SuspendLayout();
@@ -96,34 +82,26 @@
       this.tabDataDeleteColumnsVariance.SuspendLayout();
       this.tabDataDeleteRowsInfo.SuspendLayout();
-      this.tabReplaceMissingValues.SuspendLayout();
-      this.tabDataShuffle.SuspendLayout();
       this.grpBoxPreview.SuspendLayout();
       this.tabsPreview.SuspendLayout();
       this.tabPreviewInactive.SuspendLayout();
       this.tabPreviewDeleteColumnsInfo.SuspendLayout();
+      this.panel1.SuspendLayout();
       this.tabPreviewDeleteColumnsVariance.SuspendLayout();
+      this.panel2.SuspendLayout();
       this.tabPreviewDeleteRowsInfo.SuspendLayout();
-      this.tabPreviewReplaceMissingValues.SuspendLayout();
-      this.tabPreviewShuffle.SuspendLayout();
-      this.panel1.SuspendLayout();
-      this.panel2.SuspendLayout();
       this.SuspendLayout();
       // 
       // lstMethods
       // 
-      this.lstMethods.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.lstMethods.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.lstMethods.FormattingEnabled = true;
-      this.lstMethods.ItemHeight = 16;
       this.lstMethods.Items.AddRange(new object[] {
             "Delete Columns with insufficient Information",
             "Delete Columns with insufficient Variance",
-            "Delete Rows with insufficient Information",
-            "Replace Missing Values",
-            "Shuffle Data"});
-      this.lstMethods.Location = new System.Drawing.Point(4, 4);
-      this.lstMethods.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            "Delete Rows with insufficient Information"});
+      this.lstMethods.Location = new System.Drawing.Point(3, 3);
       this.lstMethods.Name = "lstMethods";
-      this.lstMethods.Size = new System.Drawing.Size(976, 116);
+      this.lstMethods.Size = new System.Drawing.Size(733, 95);
       this.lstMethods.Sorted = true;
       this.lstMethods.TabIndex = 0;
@@ -134,8 +112,7 @@
       this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.btnApply.Enabled = false;
-      this.btnApply.Location = new System.Drawing.Point(804, 615);
-      this.btnApply.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.btnApply.Location = new System.Drawing.Point(603, 500);
       this.btnApply.Name = "btnApply";
-      this.btnApply.Size = new System.Drawing.Size(172, 28);
+      this.btnApply.Size = new System.Drawing.Size(129, 23);
       this.btnApply.TabIndex = 2;
       this.btnApply.Text = "Apply Manipulation";
@@ -145,12 +122,10 @@
       // grpBoxData
       // 
-      this.grpBoxData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.grpBoxData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.grpBoxData.Controls.Add(this.tabsData);
-      this.grpBoxData.Location = new System.Drawing.Point(5, 129);
-      this.grpBoxData.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.grpBoxData.Location = new System.Drawing.Point(4, 105);
       this.grpBoxData.Name = "grpBoxData";
-      this.grpBoxData.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.grpBoxData.Size = new System.Drawing.Size(976, 233);
+      this.grpBoxData.Size = new System.Drawing.Size(732, 189);
       this.grpBoxData.TabIndex = 3;
       this.grpBoxData.TabStop = false;
@@ -159,5 +134,5 @@
       // tabsData
       // 
-      this.tabsData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.tabsData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.tabsData.Controls.Add(this.tabPage1);
@@ -165,12 +140,9 @@
       this.tabsData.Controls.Add(this.tabDataDeleteColumnsVariance);
       this.tabsData.Controls.Add(this.tabDataDeleteRowsInfo);
-      this.tabsData.Controls.Add(this.tabReplaceMissingValues);
-      this.tabsData.Controls.Add(this.tabDataShuffle);
       this.tabsData.ItemSize = new System.Drawing.Size(58, 18);
-      this.tabsData.Location = new System.Drawing.Point(8, 23);
-      this.tabsData.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabsData.Location = new System.Drawing.Point(6, 19);
       this.tabsData.Name = "tabsData";
       this.tabsData.SelectedIndex = 0;
-      this.tabsData.Size = new System.Drawing.Size(959, 202);
+      this.tabsData.Size = new System.Drawing.Size(719, 164);
       this.tabsData.TabIndex = 3;
       // 
@@ -179,8 +151,7 @@
       this.tabPage1.Controls.Add(this.label7);
       this.tabPage1.Location = new System.Drawing.Point(4, 22);
-      this.tabPage1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPage1.Name = "tabPage1";
-      this.tabPage1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabPage1.Size = new System.Drawing.Size(951, 176);
+      this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPage1.Size = new System.Drawing.Size(711, 138);
       this.tabPage1.TabIndex = 5;
       this.tabPage1.Text = "tabDataInactive";
@@ -191,8 +162,7 @@
       this.label7.AutoSize = true;
       this.label7.Enabled = false;
-      this.label7.Location = new System.Drawing.Point(4, 4);
-      this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+      this.label7.Location = new System.Drawing.Point(3, 3);
       this.label7.Name = "label7";
-      this.label7.Size = new System.Drawing.Size(345, 17);
+      this.label7.Size = new System.Drawing.Size(259, 13);
       this.label7.TabIndex = 1;
       this.label7.Text = "Please select one of the manipulation methods above";
@@ -204,8 +174,7 @@
       this.tabDataDeleteColumnsInformation.Controls.Add(this.label1);
       this.tabDataDeleteColumnsInformation.Location = new System.Drawing.Point(4, 22);
-      this.tabDataDeleteColumnsInformation.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabDataDeleteColumnsInformation.Name = "tabDataDeleteColumnsInformation";
-      this.tabDataDeleteColumnsInformation.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabDataDeleteColumnsInformation.Size = new System.Drawing.Size(951, 176);
+      this.tabDataDeleteColumnsInformation.Padding = new System.Windows.Forms.Padding(3);
+      this.tabDataDeleteColumnsInformation.Size = new System.Drawing.Size(711, 138);
       this.tabDataDeleteColumnsInformation.TabIndex = 0;
       this.tabDataDeleteColumnsInformation.Text = "del columns info";
@@ -215,8 +184,7 @@
       // 
       this.label2.AutoSize = true;
-      this.label2.Location = new System.Drawing.Point(272, 4);
-      this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+      this.label2.Location = new System.Drawing.Point(204, 3);
       this.label2.Name = "label2";
-      this.label2.Size = new System.Drawing.Size(120, 17);
+      this.label2.Size = new System.Drawing.Size(89, 13);
       this.label2.TabIndex = 5;
       this.label2.Text = "% missing values.";
@@ -224,8 +192,7 @@
       // txtDeleteColumnsInfo
       // 
-      this.txtDeleteColumnsInfo.Location = new System.Drawing.Point(219, 0);
-      this.txtDeleteColumnsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.txtDeleteColumnsInfo.Location = new System.Drawing.Point(164, 0);
       this.txtDeleteColumnsInfo.Name = "txtDeleteColumnsInfo";
-      this.txtDeleteColumnsInfo.Size = new System.Drawing.Size(44, 22);
+      this.txtDeleteColumnsInfo.Size = new System.Drawing.Size(34, 20);
       this.txtDeleteColumnsInfo.TabIndex = 4;
       this.txtDeleteColumnsInfo.TextChanged += new System.EventHandler(this.txtDeleteColumnsInfo_TextChanged);
@@ -234,8 +201,7 @@
       // 
       this.label1.AutoSize = true;
-      this.label1.Location = new System.Drawing.Point(4, 4);
-      this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+      this.label1.Location = new System.Drawing.Point(3, 3);
       this.label1.Name = "label1";
-      this.label1.Size = new System.Drawing.Size(205, 17);
+      this.label1.Size = new System.Drawing.Size(155, 13);
       this.label1.TabIndex = 3;
       this.label1.Text = "Delete columns with more than ";
@@ -246,8 +212,7 @@
       this.tabDataDeleteColumnsVariance.Controls.Add(this.label4);
       this.tabDataDeleteColumnsVariance.Location = new System.Drawing.Point(4, 22);
-      this.tabDataDeleteColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabDataDeleteColumnsVariance.Name = "tabDataDeleteColumnsVariance";
-      this.tabDataDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabDataDeleteColumnsVariance.Size = new System.Drawing.Size(951, 176);
+      this.tabDataDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(3);
+      this.tabDataDeleteColumnsVariance.Size = new System.Drawing.Size(711, 138);
       this.tabDataDeleteColumnsVariance.TabIndex = 1;
       this.tabDataDeleteColumnsVariance.Text = "del columns variance";
@@ -256,8 +221,7 @@
       // txtDeleteColumnsVariance
       // 
-      this.txtDeleteColumnsVariance.Location = new System.Drawing.Point(305, 0);
-      this.txtDeleteColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.txtDeleteColumnsVariance.Location = new System.Drawing.Point(229, 0);
       this.txtDeleteColumnsVariance.Name = "txtDeleteColumnsVariance";
-      this.txtDeleteColumnsVariance.Size = new System.Drawing.Size(179, 22);
+      this.txtDeleteColumnsVariance.Size = new System.Drawing.Size(135, 20);
       this.txtDeleteColumnsVariance.TabIndex = 4;
       this.txtDeleteColumnsVariance.TextChanged += new System.EventHandler(this.txtDeleteColumnsVariance_TextChanged);
@@ -266,8 +230,7 @@
       // 
       this.label4.AutoSize = true;
-      this.label4.Location = new System.Drawing.Point(4, 4);
-      this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+      this.label4.Location = new System.Drawing.Point(3, 3);
       this.label4.Name = "label4";
-      this.label4.Size = new System.Drawing.Size(292, 17);
+      this.label4.Size = new System.Drawing.Size(220, 13);
       this.label4.TabIndex = 3;
       this.label4.Text = "Delete columns with a variance smaller than  ";
@@ -279,8 +242,7 @@
       this.tabDataDeleteRowsInfo.Controls.Add(this.label5);
       this.tabDataDeleteRowsInfo.Location = new System.Drawing.Point(4, 22);
-      this.tabDataDeleteRowsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabDataDeleteRowsInfo.Name = "tabDataDeleteRowsInfo";
-      this.tabDataDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabDataDeleteRowsInfo.Size = new System.Drawing.Size(951, 176);
+      this.tabDataDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(3);
+      this.tabDataDeleteRowsInfo.Size = new System.Drawing.Size(711, 138);
       this.tabDataDeleteRowsInfo.TabIndex = 2;
       this.tabDataDeleteRowsInfo.Text = "del rows info";
@@ -290,8 +252,7 @@
       // 
       this.label3.AutoSize = true;
-      this.label3.Location = new System.Drawing.Point(252, 4);
-      this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+      this.label3.Location = new System.Drawing.Point(189, 3);
       this.label3.Name = "label3";
-      this.label3.Size = new System.Drawing.Size(120, 17);
+      this.label3.Size = new System.Drawing.Size(89, 13);
       this.label3.TabIndex = 8;
       this.label3.Text = "% missing values.";
@@ -299,8 +260,7 @@
       // txtDeleteRowsInfo
       // 
-      this.txtDeleteRowsInfo.Location = new System.Drawing.Point(196, 0);
-      this.txtDeleteRowsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.txtDeleteRowsInfo.Location = new System.Drawing.Point(147, 0);
       this.txtDeleteRowsInfo.Name = "txtDeleteRowsInfo";
-      this.txtDeleteRowsInfo.Size = new System.Drawing.Size(44, 22);
+      this.txtDeleteRowsInfo.Size = new System.Drawing.Size(34, 20);
       this.txtDeleteRowsInfo.TabIndex = 7;
       this.txtDeleteRowsInfo.TextChanged += new System.EventHandler(this.txtDeleteRowsInfo_TextChanged);
@@ -309,141 +269,19 @@
       // 
       this.label5.AutoSize = true;
-      this.label5.Location = new System.Drawing.Point(4, 4);
-      this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+      this.label5.Location = new System.Drawing.Point(3, 3);
       this.label5.Name = "label5";
-      this.label5.Size = new System.Drawing.Size(182, 17);
+      this.label5.Size = new System.Drawing.Size(138, 13);
       this.label5.TabIndex = 6;
       this.label5.Text = "Delete rows with more than ";
       // 
-      // tabReplaceMissingValues
-      // 
-      this.tabReplaceMissingValues.Controls.Add(this.txtReplaceValue);
-      this.tabReplaceMissingValues.Controls.Add(this.cmbVariableNames);
-      this.tabReplaceMissingValues.Controls.Add(this.cmbReplaceWith);
-      this.tabReplaceMissingValues.Controls.Add(this.lblValueColon);
-      this.tabReplaceMissingValues.Controls.Add(this.label8);
-      this.tabReplaceMissingValues.Controls.Add(this.label10);
-      this.tabReplaceMissingValues.Location = new System.Drawing.Point(4, 22);
-      this.tabReplaceMissingValues.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabReplaceMissingValues.Name = "tabReplaceMissingValues";
-      this.tabReplaceMissingValues.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabReplaceMissingValues.Size = new System.Drawing.Size(951, 176);
-      this.tabReplaceMissingValues.TabIndex = 6;
-      this.tabReplaceMissingValues.Text = "repl missing vals";
-      this.tabReplaceMissingValues.UseVisualStyleBackColor = true;
-      // 
-      // txtReplaceValue
-      // 
-      this.txtReplaceValue.Location = new System.Drawing.Point(231, 33);
-      this.txtReplaceValue.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.txtReplaceValue.Name = "txtReplaceValue";
-      this.txtReplaceValue.Size = new System.Drawing.Size(132, 22);
-      this.txtReplaceValue.TabIndex = 2;
-      this.txtReplaceValue.TextChanged += new System.EventHandler(this.txtReplaceValue_TextChanged);
-      // 
-      // cmbVariableNames
-      // 
-      this.cmbVariableNames.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.cmbVariableNames.FormattingEnabled = true;
-      this.cmbVariableNames.Location = new System.Drawing.Point(189, 0);
-      this.cmbVariableNames.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.cmbVariableNames.Name = "cmbVariableNames";
-      this.cmbVariableNames.Size = new System.Drawing.Size(160, 24);
-      this.cmbVariableNames.TabIndex = 1;
-      this.cmbVariableNames.SelectedIndexChanged += new System.EventHandler(this.cmbReplaceWith_SelectedIndexChanged);
-      // 
-      // cmbReplaceWith
-      // 
-      this.cmbReplaceWith.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.cmbReplaceWith.FormattingEnabled = true;
-      this.cmbReplaceWith.Items.AddRange(new object[] {
-            "Value",
-            "Average",
-            "Median",
-            "Most Common",
-            "Random"});
-      this.cmbReplaceWith.Location = new System.Drawing.Point(47, 33);
-      this.cmbReplaceWith.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.cmbReplaceWith.Name = "cmbReplaceWith";
-      this.cmbReplaceWith.Size = new System.Drawing.Size(160, 24);
-      this.cmbReplaceWith.TabIndex = 1;
-      this.cmbReplaceWith.SelectedIndexChanged += new System.EventHandler(this.cmbReplaceWith_SelectedIndexChanged);
-      // 
-      // lblValueColon
-      // 
-      this.lblValueColon.AutoSize = true;
-      this.lblValueColon.Location = new System.Drawing.Point(209, 37);
-      this.lblValueColon.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-      this.lblValueColon.Name = "lblValueColon";
-      this.lblValueColon.Size = new System.Drawing.Size(12, 17);
-      this.lblValueColon.TabIndex = 0;
-      this.lblValueColon.Text = ":";
-      // 
-      // label8
-      // 
-      this.label8.AutoSize = true;
-      this.label8.Location = new System.Drawing.Point(4, 37);
-      this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-      this.label8.Name = "label8";
-      this.label8.Size = new System.Drawing.Size(32, 17);
-      this.label8.TabIndex = 0;
-      this.label8.Text = "with";
-      // 
-      // label10
-      // 
-      this.label10.AutoSize = true;
-      this.label10.Location = new System.Drawing.Point(4, 4);
-      this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-      this.label10.Name = "label10";
-      this.label10.Size = new System.Drawing.Size(177, 17);
-      this.label10.TabIndex = 0;
-      this.label10.Text = "Replace missing values for";
-      // 
-      // tabDataShuffle
-      // 
-      this.tabDataShuffle.Controls.Add(this.shuffleSeparatelyCheckbox);
-      this.tabDataShuffle.Controls.Add(this.lblShuffleProperties);
-      this.tabDataShuffle.Location = new System.Drawing.Point(4, 22);
-      this.tabDataShuffle.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabDataShuffle.Name = "tabDataShuffle";
-      this.tabDataShuffle.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabDataShuffle.Size = new System.Drawing.Size(951, 176);
-      this.tabDataShuffle.TabIndex = 4;
-      this.tabDataShuffle.Text = "shuffle";
-      this.tabDataShuffle.UseVisualStyleBackColor = true;
-      // 
-      // shuffleSeparatelyCheckbox
-      // 
-      this.shuffleSeparatelyCheckbox.AutoSize = true;
-      this.shuffleSeparatelyCheckbox.Location = new System.Drawing.Point(8, 2);
-      this.shuffleSeparatelyCheckbox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.shuffleSeparatelyCheckbox.Name = "shuffleSeparatelyCheckbox";
-      this.shuffleSeparatelyCheckbox.Size = new System.Drawing.Size(312, 21);
-      this.shuffleSeparatelyCheckbox.TabIndex = 1;
-      this.shuffleSeparatelyCheckbox.Text = "Shuffle training and test partitions separately";
-      this.shuffleSeparatelyCheckbox.UseVisualStyleBackColor = true;
-      // 
-      // lblShuffleProperties
-      // 
-      this.lblShuffleProperties.AutoSize = true;
-      this.lblShuffleProperties.Enabled = false;
-      this.lblShuffleProperties.Location = new System.Drawing.Point(4, 4);
-      this.lblShuffleProperties.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-      this.lblShuffleProperties.Name = "lblShuffleProperties";
-      this.lblShuffleProperties.Size = new System.Drawing.Size(154, 17);
-      this.lblShuffleProperties.TabIndex = 0;
-      this.lblShuffleProperties.Text = "No properties available";
-      // 
       // grpBoxPreview
       // 
-      this.grpBoxPreview.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-            | System.Windows.Forms.AnchorStyles.Left)
+      this.grpBoxPreview.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.grpBoxPreview.Controls.Add(this.tabsPreview);
-      this.grpBoxPreview.Location = new System.Drawing.Point(5, 370);
-      this.grpBoxPreview.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.grpBoxPreview.Location = new System.Drawing.Point(4, 301);
       this.grpBoxPreview.Name = "grpBoxPreview";
-      this.grpBoxPreview.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.grpBoxPreview.Size = new System.Drawing.Size(976, 238);
+      this.grpBoxPreview.Size = new System.Drawing.Size(732, 193);
       this.grpBoxPreview.TabIndex = 4;
       this.grpBoxPreview.TabStop = false;
@@ -452,5 +290,5 @@
       // tabsPreview
       // 
-      this.tabsPreview.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+      this.tabsPreview.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.tabsPreview.Controls.Add(this.tabPreviewInactive);
@@ -458,12 +296,9 @@
       this.tabsPreview.Controls.Add(this.tabPreviewDeleteColumnsVariance);
       this.tabsPreview.Controls.Add(this.tabPreviewDeleteRowsInfo);
-      this.tabsPreview.Controls.Add(this.tabPreviewReplaceMissingValues);
-      this.tabsPreview.Controls.Add(this.tabPreviewShuffle);
       this.tabsPreview.ItemSize = new System.Drawing.Size(58, 18);
-      this.tabsPreview.Location = new System.Drawing.Point(8, 23);
-      this.tabsPreview.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabsPreview.Location = new System.Drawing.Point(6, 19);
       this.tabsPreview.Name = "tabsPreview";
       this.tabsPreview.SelectedIndex = 0;
-      this.tabsPreview.Size = new System.Drawing.Size(959, 207);
+      this.tabsPreview.Size = new System.Drawing.Size(719, 168);
       this.tabsPreview.TabIndex = 3;
       // 
@@ -472,8 +307,7 @@
       this.tabPreviewInactive.Controls.Add(this.lblPreviewInActive);
       this.tabPreviewInactive.Location = new System.Drawing.Point(4, 22);
-      this.tabPreviewInactive.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewInactive.Name = "tabPreviewInactive";
-      this.tabPreviewInactive.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabPreviewInactive.Size = new System.Drawing.Size(951, 181);
+      this.tabPreviewInactive.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPreviewInactive.Size = new System.Drawing.Size(711, 142);
       this.tabPreviewInactive.TabIndex = 5;
       this.tabPreviewInactive.Text = "inactive";
@@ -483,8 +317,7 @@
       // 
       this.lblPreviewInActive.AutoSize = true;
-      this.lblPreviewInActive.Location = new System.Drawing.Point(4, 4);
-      this.lblPreviewInActive.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+      this.lblPreviewInActive.Location = new System.Drawing.Point(3, 3);
       this.lblPreviewInActive.Name = "lblPreviewInActive";
-      this.lblPreviewInActive.Size = new System.Drawing.Size(491, 51);
+      this.lblPreviewInActive.Size = new System.Drawing.Size(361, 39);
       this.lblPreviewInActive.TabIndex = 2;
       this.lblPreviewInActive.Text = "Filters are active and thus manipulations cannot be applied!\r\n\r\nPlease deactive t" +
@@ -496,12 +329,22 @@
       this.tabPreviewDeleteColumnsInfo.Controls.Add(this.panel1);
       this.tabPreviewDeleteColumnsInfo.Location = new System.Drawing.Point(4, 22);
-      this.tabPreviewDeleteColumnsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewDeleteColumnsInfo.Name = "tabPreviewDeleteColumnsInfo";
-      this.tabPreviewDeleteColumnsInfo.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabPreviewDeleteColumnsInfo.Size = new System.Drawing.Size(951, 181);
+      this.tabPreviewDeleteColumnsInfo.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPreviewDeleteColumnsInfo.Size = new System.Drawing.Size(711, 142);
       this.tabPreviewDeleteColumnsInfo.TabIndex = 0;
       this.tabPreviewDeleteColumnsInfo.Text = "del columns info";
       this.tabPreviewDeleteColumnsInfo.UseVisualStyleBackColor = true;
       // 
+      // panel1
+      // 
+      this.panel1.AutoScroll = true;
+      this.panel1.Controls.Add(this.lblPreviewColumnsInfo);
+      this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.panel1.Location = new System.Drawing.Point(3, 3);
+      this.panel1.Margin = new System.Windows.Forms.Padding(2);
+      this.panel1.Name = "panel1";
+      this.panel1.Size = new System.Drawing.Size(705, 136);
+      this.panel1.TabIndex = 2;
+      // 
       // lblPreviewColumnsInfo
       // 
@@ -509,7 +352,6 @@
       this.lblPreviewColumnsInfo.Dock = System.Windows.Forms.DockStyle.Left;
       this.lblPreviewColumnsInfo.Location = new System.Drawing.Point(0, 0);
-      this.lblPreviewColumnsInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.lblPreviewColumnsInfo.Name = "lblPreviewColumnsInfo";
-      this.lblPreviewColumnsInfo.Size = new System.Drawing.Size(423, 17);
+      this.lblPreviewColumnsInfo.Size = new System.Drawing.Size(318, 13);
       this.lblPreviewColumnsInfo.TabIndex = 1;
       this.lblPreviewColumnsInfo.Text = "{0} columns with more than {1} % missing values would be deleted";
@@ -520,20 +362,21 @@
       this.tabPreviewDeleteColumnsVariance.Controls.Add(this.label12);
       this.tabPreviewDeleteColumnsVariance.Location = new System.Drawing.Point(4, 22);
-      this.tabPreviewDeleteColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewDeleteColumnsVariance.Name = "tabPreviewDeleteColumnsVariance";
-      this.tabPreviewDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabPreviewDeleteColumnsVariance.Size = new System.Drawing.Size(951, 181);
+      this.tabPreviewDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPreviewDeleteColumnsVariance.Size = new System.Drawing.Size(711, 142);
       this.tabPreviewDeleteColumnsVariance.TabIndex = 1;
       this.tabPreviewDeleteColumnsVariance.Text = "del columns variance";
       this.tabPreviewDeleteColumnsVariance.UseVisualStyleBackColor = true;
       // 
-      // label12
-      // 
-      this.label12.AutoSize = true;
-      this.label12.Location = new System.Drawing.Point(8, 27);
-      this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-      this.label12.Name = "label12";
-      this.label12.Size = new System.Drawing.Size(0, 17);
-      this.label12.TabIndex = 2;
+      // panel2
+      // 
+      this.panel2.AutoScroll = true;
+      this.panel2.Controls.Add(this.lblPreviewColumnsVariance);
+      this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.panel2.Location = new System.Drawing.Point(3, 3);
+      this.panel2.Margin = new System.Windows.Forms.Padding(2);
+      this.panel2.Name = "panel2";
+      this.panel2.Size = new System.Drawing.Size(705, 136);
+      this.panel2.TabIndex = 3;
       // 
       // lblPreviewColumnsVariance
@@ -542,18 +385,24 @@
       this.lblPreviewColumnsVariance.Dock = System.Windows.Forms.DockStyle.Left;
       this.lblPreviewColumnsVariance.Location = new System.Drawing.Point(0, 0);
-      this.lblPreviewColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.lblPreviewColumnsVariance.Name = "lblPreviewColumnsVariance";
-      this.lblPreviewColumnsVariance.Size = new System.Drawing.Size(398, 17);
+      this.lblPreviewColumnsVariance.Size = new System.Drawing.Size(301, 13);
       this.lblPreviewColumnsVariance.TabIndex = 2;
       this.lblPreviewColumnsVariance.Text = "{0} columns with a variance smaller than {1} would be deleted.";
       // 
+      // label12
+      // 
+      this.label12.AutoSize = true;
+      this.label12.Location = new System.Drawing.Point(6, 22);
+      this.label12.Name = "label12";
+      this.label12.Size = new System.Drawing.Size(0, 13);
+      this.label12.TabIndex = 2;
+      // 
       // tabPreviewDeleteRowsInfo
       // 
       this.tabPreviewDeleteRowsInfo.Controls.Add(this.lblPreviewRowsInfo);
       this.tabPreviewDeleteRowsInfo.Location = new System.Drawing.Point(4, 22);
-      this.tabPreviewDeleteRowsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewDeleteRowsInfo.Name = "tabPreviewDeleteRowsInfo";
-      this.tabPreviewDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabPreviewDeleteRowsInfo.Size = new System.Drawing.Size(951, 181);
+      this.tabPreviewDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(3);
+      this.tabPreviewDeleteRowsInfo.Size = new System.Drawing.Size(711, 142);
       this.tabPreviewDeleteRowsInfo.TabIndex = 2;
       this.tabPreviewDeleteRowsInfo.Text = "del rows info";
@@ -563,54 +412,9 @@
       // 
       this.lblPreviewRowsInfo.AutoSize = true;
-      this.lblPreviewRowsInfo.Location = new System.Drawing.Point(4, 4);
-      this.lblPreviewRowsInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+      this.lblPreviewRowsInfo.Location = new System.Drawing.Point(3, 3);
       this.lblPreviewRowsInfo.Name = "lblPreviewRowsInfo";
-      this.lblPreviewRowsInfo.Size = new System.Drawing.Size(400, 17);
+      this.lblPreviewRowsInfo.Size = new System.Drawing.Size(301, 13);
       this.lblPreviewRowsInfo.TabIndex = 2;
       this.lblPreviewRowsInfo.Text = "{0} rows with more than {1} % missing values would be deleted";
-      // 
-      // tabPreviewReplaceMissingValues
-      // 
-      this.tabPreviewReplaceMissingValues.Controls.Add(this.lblPreviewReplaceMissingValues);
-      this.tabPreviewReplaceMissingValues.Location = new System.Drawing.Point(4, 22);
-      this.tabPreviewReplaceMissingValues.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabPreviewReplaceMissingValues.Name = "tabPreviewReplaceMissingValues";
-      this.tabPreviewReplaceMissingValues.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabPreviewReplaceMissingValues.Size = new System.Drawing.Size(951, 181);
-      this.tabPreviewReplaceMissingValues.TabIndex = 6;
-      this.tabPreviewReplaceMissingValues.Text = "repl missing vals";
-      this.tabPreviewReplaceMissingValues.UseVisualStyleBackColor = true;
-      // 
-      // lblPreviewReplaceMissingValues
-      // 
-      this.lblPreviewReplaceMissingValues.AutoSize = true;
-      this.lblPreviewReplaceMissingValues.Location = new System.Drawing.Point(4, 4);
-      this.lblPreviewReplaceMissingValues.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-      this.lblPreviewReplaceMissingValues.Name = "lblPreviewReplaceMissingValues";
-      this.lblPreviewReplaceMissingValues.Size = new System.Drawing.Size(449, 17);
-      this.lblPreviewReplaceMissingValues.TabIndex = 3;
-      this.lblPreviewReplaceMissingValues.Text = "{0} cells detected with missing values which would be replaced with {1}";
-      // 
-      // tabPreviewShuffle
-      // 
-      this.tabPreviewShuffle.Controls.Add(this.lblPreviewShuffle);
-      this.tabPreviewShuffle.Location = new System.Drawing.Point(4, 22);
-      this.tabPreviewShuffle.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabPreviewShuffle.Name = "tabPreviewShuffle";
-      this.tabPreviewShuffle.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
-      this.tabPreviewShuffle.Size = new System.Drawing.Size(951, 181);
-      this.tabPreviewShuffle.TabIndex = 4;
-      this.tabPreviewShuffle.Text = "shuffle";
-      this.tabPreviewShuffle.UseVisualStyleBackColor = true;
-      // 
-      // lblPreviewShuffle
-      // 
-      this.lblPreviewShuffle.AutoSize = true;
-      this.lblPreviewShuffle.Location = new System.Drawing.Point(4, 4);
-      this.lblPreviewShuffle.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
-      this.lblPreviewShuffle.Name = "lblPreviewShuffle";
-      this.lblPreviewShuffle.Size = new System.Drawing.Size(337, 17);
-      this.lblPreviewShuffle.TabIndex = 0;
-      this.lblPreviewShuffle.Text = "Data will be shuffled randomly - preview not possible";
       // 
       // label9
@@ -621,27 +425,7 @@
       this.label9.TabIndex = 0;
       // 
-      // panel1
-      // 
-      this.panel1.AutoScroll = true;
-      this.panel1.Controls.Add(this.lblPreviewColumnsInfo);
-      this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.panel1.Location = new System.Drawing.Point(4, 4);
-      this.panel1.Name = "panel1";
-      this.panel1.Size = new System.Drawing.Size(943, 173);
-      this.panel1.TabIndex = 2;
-      // 
-      // panel2
-      // 
-      this.panel2.AutoScroll = true;
-      this.panel2.Controls.Add(this.lblPreviewColumnsVariance);
-      this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.panel2.Location = new System.Drawing.Point(4, 4);
-      this.panel2.Name = "panel2";
-      this.panel2.Size = new System.Drawing.Size(943, 173);
-      this.panel2.TabIndex = 3;
-      // 
       // ManipulationView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.Controls.Add(this.btnApply);
@@ -649,7 +433,6 @@
       this.Controls.Add(this.grpBoxData);
       this.Controls.Add(this.lstMethods);
-      this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.Name = "ManipulationView";
-      this.Size = new System.Drawing.Size(985, 651);
+      this.Size = new System.Drawing.Size(739, 529);
       this.grpBoxData.ResumeLayout(false);
       this.tabsData.ResumeLayout(false);
@@ -662,8 +445,4 @@
       this.tabDataDeleteRowsInfo.ResumeLayout(false);
       this.tabDataDeleteRowsInfo.PerformLayout();
-      this.tabReplaceMissingValues.ResumeLayout(false);
-      this.tabReplaceMissingValues.PerformLayout();
-      this.tabDataShuffle.ResumeLayout(false);
-      this.tabDataShuffle.PerformLayout();
       this.grpBoxPreview.ResumeLayout(false);
       this.tabsPreview.ResumeLayout(false);
@@ -671,16 +450,12 @@
       this.tabPreviewInactive.PerformLayout();
       this.tabPreviewDeleteColumnsInfo.ResumeLayout(false);
+      this.panel1.ResumeLayout(false);
+      this.panel1.PerformLayout();
       this.tabPreviewDeleteColumnsVariance.ResumeLayout(false);
       this.tabPreviewDeleteColumnsVariance.PerformLayout();
+      this.panel2.ResumeLayout(false);
+      this.panel2.PerformLayout();
       this.tabPreviewDeleteRowsInfo.ResumeLayout(false);
       this.tabPreviewDeleteRowsInfo.PerformLayout();
-      this.tabPreviewReplaceMissingValues.ResumeLayout(false);
-      this.tabPreviewReplaceMissingValues.PerformLayout();
-      this.tabPreviewShuffle.ResumeLayout(false);
-      this.tabPreviewShuffle.PerformLayout();
-      this.panel1.ResumeLayout(false);
-      this.panel1.PerformLayout();
-      this.panel2.ResumeLayout(false);
-      this.panel2.PerformLayout();
       this.ResumeLayout(false);
 
@@ -697,6 +472,4 @@
     private System.Windows.Forms.TabPage tabPreviewDeleteColumnsVariance;
     private System.Windows.Forms.TabPage tabPreviewDeleteRowsInfo;
-    private System.Windows.Forms.TabPage tabPreviewShuffle;
-    private System.Windows.Forms.Label lblPreviewShuffle;
     private System.Windows.Forms.TabPage tabPreviewInactive;
     private System.Windows.Forms.Label lblPreviewColumnsInfo;
@@ -704,6 +477,4 @@
     private System.Windows.Forms.Label lblPreviewColumnsVariance;
     private System.Windows.Forms.Label lblPreviewRowsInfo;
-    private System.Windows.Forms.TabPage tabPreviewReplaceMissingValues;
-    private System.Windows.Forms.Label lblPreviewReplaceMissingValues;
     private System.Windows.Forms.Label label9;
     private System.Windows.Forms.TabControl tabsData;
@@ -721,15 +492,5 @@
     private System.Windows.Forms.TextBox txtDeleteRowsInfo;
     private System.Windows.Forms.Label label5;
-    private System.Windows.Forms.TabPage tabReplaceMissingValues;
-    private System.Windows.Forms.TextBox txtReplaceValue;
-    private System.Windows.Forms.ComboBox cmbReplaceWith;
-    private System.Windows.Forms.Label lblValueColon;
-    private System.Windows.Forms.Label label10;
-    private System.Windows.Forms.TabPage tabDataShuffle;
-    private System.Windows.Forms.Label lblShuffleProperties;
-    private System.Windows.Forms.ComboBox cmbVariableNames;
-    private System.Windows.Forms.Label label8;
     private System.Windows.Forms.Label lblPreviewInActive;
-    private System.Windows.Forms.CheckBox shuffleSeparatelyCheckbox;
     private System.Windows.Forms.Panel panel1;
     private System.Windows.Forms.Panel panel2;
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.cs	(revision 15284)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.cs	(revision 15285)
@@ -21,5 +21,4 @@
 
 using System;
-using System.Collections.Generic;
 using System.Drawing;
 using System.Globalization;
@@ -44,5 +43,4 @@
     public ManipulationView() {
       InitializeComponent();
-      cmbReplaceWith.SelectedIndex = 0;
       tabsData.Appearance = TabAppearance.FlatButtons;
       tabsData.ItemSize = new Size(0, 1);
@@ -56,14 +54,10 @@
         () => ValidateDeleteColumnsVariance(),
         () => ValidateDeleteRowsInfo(),
-        () => ValidateReplaceWith(),
-        () => ValidateShuffle()
       };
 
       manipulations = new Action[] {
-        () => Content.ManipulationLogic.DeleteColumnsWithMissingValuesGreater(GetDeleteColumnsInfo()),
-        () => Content.ManipulationLogic.DeleteColumnsWithVarianceSmaller(GetDeleteColumnsVariance()),
-        () => Content.ManipulationLogic.DeleteRowsWithMissingValuesGreater(GetRowsColumnsInfo()),
-        () => ReplaceMissingValues(),
-        () => Content.ManipulationLogic.Shuffle(shuffleSeparatelyCheckbox.Checked)
+        () => Content.DeleteColumnsWithMissingValuesGreater(GetDeleteColumnsInfo()),
+        () => Content.DeleteColumnsWithVarianceSmaller(GetDeleteColumnsVariance()),
+        () => Content.DeleteRowsWithMissingValuesGreater(GetRowsColumnsInfo()),
       };
     }
@@ -72,9 +66,4 @@
       base.OnContentChanged();
       if (Content != null) {
-        cmbVariableNames.Items.Clear();
-        foreach (var name in Content.ManipulationLogic.VariableNames) {
-          cmbVariableNames.Items.Add(name);
-        }
-        cmbVariableNames.SelectedIndex = 0;
         CheckFilters();
       }
@@ -83,9 +72,9 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.ManipulationLogic.PreprocessingData.FilterChanged += FilterLogic_FilterChanged;
+      Content.PreprocessingData.FilterChanged += FilterLogic_FilterChanged;
     }
 
     protected override void DeregisterContentEvents() {
-      Content.ManipulationLogic.PreprocessingData.FilterChanged -= FilterLogic_FilterChanged;
+      Content.PreprocessingData.FilterChanged -= FilterLogic_FilterChanged;
       base.DeregisterContentEvents();
     }
@@ -126,36 +115,8 @@
     }
 
-    private void ReplaceMissingValues() {
-      var missingValuesIndices = new List<int>();
-      var columnIndex = cmbVariableNames.SelectedIndex;
-      var columnIndices = new Dictionary<int, IList<int>> { { columnIndex, missingValuesIndices } };
-
-      for (int rowIndex = 0; rowIndex < Content.ManipulationLogic.PreprocessingData.Rows; rowIndex++)
-        if (Content.ManipulationLogic.PreprocessingData.IsCellEmpty(columnIndex, rowIndex))
-          missingValuesIndices.Add(rowIndex);
-
-      switch (cmbReplaceWith.SelectedIndex) {
-        case 0: //Value
-          Content.ManipulationLogic.ReplaceIndicesByValue(columnIndices, txtReplaceValue.Text);
-          break;
-        case 1: //Average
-          Content.ManipulationLogic.ReplaceIndicesByAverageValue(columnIndices);
-          break;
-        case 2: //Median
-          Content.ManipulationLogic.ReplaceIndicesByMedianValue(columnIndices);
-          break;
-        case 3: //Most Common
-          Content.ManipulationLogic.ReplaceIndicesByMostCommonValue(columnIndices);
-          break;
-        case 4: //Random
-          Content.ManipulationLogic.ReplaceIndicesByRandomValue(columnIndices);
-          break;
-      }
-    }
-
     private void ValidateDeleteColumnsInfo() {
       ValidateDoubleTextBox(txtDeleteColumnsInfo.Text);
       if (btnApply.Enabled) {
-        var filteredColumns = Content.ManipulationLogic.ColumnsWithMissingValuesGreater(GetDeleteColumnsInfo());
+        var filteredColumns = Content.ColumnsWithMissingValuesGreater(GetDeleteColumnsInfo());
         int count = filteredColumns.Count;
         int columnCount = Content.PreprocessingData.Columns;
@@ -167,7 +128,7 @@
           sb.Append(Environment.NewLine);
           sb.Append("Columns: ");
-          sb.Append(Content.ManipulationLogic.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
+          sb.Append(Content.PreprocessingData.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
           for (int i = 1; i < filteredColumns.Count; i++) {
-            string columnName = Content.ManipulationLogic.VariableNames.ElementAt(filteredColumns.ElementAt(i));
+            string columnName = Content.PreprocessingData.VariableNames.ElementAt(filteredColumns.ElementAt(i));
             sb.Append(", ");
             sb.Append(columnName);
@@ -188,5 +149,5 @@
       ValidateDoubleTextBox(txtDeleteColumnsVariance.Text);
       if (btnApply.Enabled) {
-        var filteredColumns = Content.ManipulationLogic.ColumnsWithVarianceSmaller(GetDeleteColumnsVariance());
+        var filteredColumns = Content.ColumnsWithVarianceSmaller(GetDeleteColumnsVariance());
         int count = filteredColumns.Count;
         int columnCount = Content.PreprocessingData.Columns;
@@ -198,7 +159,7 @@
           sb.Append(Environment.NewLine);
           sb.Append("Columns: ");
-          sb.Append(Content.ManipulationLogic.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
+          sb.Append(Content.PreprocessingData.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
           for (int i = 1; i < filteredColumns.Count; i++) {
-            string columnName = Content.ManipulationLogic.VariableNames.ElementAt(filteredColumns.ElementAt(i));
+            string columnName = Content.PreprocessingData.VariableNames.ElementAt(filteredColumns.ElementAt(i));
             sb.Append(", ");
             sb.Append(columnName);
@@ -219,5 +180,5 @@
       ValidateDoubleTextBox(txtDeleteRowsInfo.Text);
       if (btnApply.Enabled) {
-        int count = Content.ManipulationLogic.RowsWithMissingValuesGreater(GetRowsColumnsInfo()).Count;
+        int count = Content.RowsWithMissingValuesGreater(GetRowsColumnsInfo()).Count;
         int rowCount = Content.PreprocessingData.Rows;
         lblPreviewRowsInfo.Text = count + " row" + (count > 1 || count == 0 ? "s" : "") + " of " + rowCount + " (" + string.Format("{0:F2}%", 100d / rowCount * count) + ") were detected with more than " + txtDeleteRowsInfo.Text + "% missing values.";
@@ -230,47 +191,4 @@
         lblPreviewRowsInfo.Text = "Preview not possible yet - please input the limit above.";
       }
-    }
-
-    private void ValidateReplaceWith() {
-      btnApply.Enabled = false;
-      string replaceWith = (string)cmbReplaceWith.SelectedItem;
-      int columnIndex = cmbVariableNames.SelectedIndex;
-
-      if (cmbReplaceWith.SelectedIndex == 0) {
-        string errorMessage;
-        string replaceValue = txtReplaceValue.Text;
-        if (string.IsNullOrEmpty(replaceValue)) {
-          lblPreviewReplaceMissingValues.Text = "Preview not possible yet - please input the text which will be used as replacement.";
-        } else if (!Content.ManipulationLogic.PreprocessingData.Validate(txtReplaceValue.Text, out errorMessage, columnIndex)) {
-          lblPreviewReplaceMissingValues.Text = "Preview not possible yet - " + errorMessage;
-        } else {
-          btnApply.Enabled = true;
-        }
-        replaceWith = "\"" + replaceValue + "\"";
-      } else {
-        btnApply.Enabled = true;
-      }
-      if (btnApply.Enabled) {
-        int count = 0;
-        for (int rowIndex = 0; rowIndex < Content.ManipulationLogic.PreprocessingData.Rows; rowIndex++)
-          if (Content.ManipulationLogic.PreprocessingData.IsCellEmpty(columnIndex, rowIndex)) count++;
-
-        int cellCount = Content.PreprocessingData.Rows * Content.PreprocessingData.Columns;
-        lblPreviewReplaceMissingValues.Text = count + " cell" + (count > 1 || count == 0 ? "s" : "")
-          + " of " + cellCount + " (" + string.Format("{0:F2}%", 100d / cellCount * count) + ") were detected with missing values which would be replaced with " + replaceWith;
-        if (count > 0) {
-          lblPreviewReplaceMissingValues.Text += Environment.NewLine + Environment.NewLine + "Please press the button \"Apply Manipulation\" if you wish to perform the replacement.";
-        } else {
-          btnApply.Enabled = false;
-        }
-      }
-    }
-
-    private void ValidateShuffle() {
-      btnApply.Enabled = true;
-      lblShuffleProperties.Enabled = false;
-      lblShuffleProperties.Visible = false;
-      shuffleSeparatelyCheckbox.Enabled = true;
-      shuffleSeparatelyCheckbox.Visible = true;
     }
 
@@ -299,12 +217,4 @@
           lblPreviewRowsInfo.Text = "rows successfully deleted.";
           break;
-        case 3:
-          lblPreviewReplaceMissingValues.Text = "missing values successfully replaced.";
-          btnApply.Enabled = false;
-          break;
-        case 4:
-          lblPreviewShuffle.Text = "dataset shuffled successfully.";
-          btnApply.Enabled = false;
-          break;
       }
     }
@@ -331,15 +241,4 @@
       ValidateDeleteRowsInfo();
     }
-
-    private void cmbReplaceWith_SelectedIndexChanged(object sender, EventArgs e) {
-      bool isReplaceWithValueSelected = cmbReplaceWith.SelectedIndex == 0;
-      lblValueColon.Visible = isReplaceWithValueSelected;
-      txtReplaceValue.Visible = isReplaceWithValueSelected;
-      ValidateReplaceWith();
-    }
-
-    private void txtReplaceValue_TextChanged(object sender, EventArgs e) {
-      ValidateReplaceWith();
-    }
   }
 }
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Content/DataGridContent.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Content/DataGridContent.cs	(revision 15284)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Content/DataGridContent.cs	(revision 15285)
@@ -28,4 +28,5 @@
 using HeuristicLab.Data;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.DataPreprocessing {
@@ -37,7 +38,4 @@
     }
 
-    [Storable]
-    public ManipulationLogic ManipulationLogic { get; private set; }
-
     public int Rows {
       get { return PreprocessingData.Rows; }
@@ -75,12 +73,10 @@
 
     #region Constructor, Cloning & Persistence
-    public DataGridContent(IFilteredPreprocessingData preprocessingData, ManipulationLogic manipulationLogic)
+    public DataGridContent(IFilteredPreprocessingData preprocessingData)
       : base(preprocessingData) {
-      ManipulationLogic = manipulationLogic;
     }
 
     public DataGridContent(DataGridContent original, Cloner cloner)
       : base(original, cloner) {
-      ManipulationLogic = cloner.Clone(original.ManipulationLogic);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -136,4 +132,217 @@
 #pragma warning restore 0067
     #endregion
+
+    #region Manipulations
+    private void ReplaceIndicesByValue(IDictionary<int, IList<int>> cells, Func<int, double> doubleAggregator = null,
+      Func<int, DateTime> dateTimeAggregator = null, Func<int, string> stringAggregator = null) {
+      PreprocessingData.InTransaction(() => {
+        foreach (var column in cells) {
+          if (doubleAggregator != null && PreprocessingData.VariableHasType<double>(column.Key)) {
+            var value = doubleAggregator(column.Key);
+            foreach (int index in column.Value)
+              PreprocessingData.SetCell<double>(column.Key, index, value);
+          } else if (dateTimeAggregator != null && PreprocessingData.VariableHasType<DateTime>(column.Key)) {
+            var value = dateTimeAggregator(column.Key);
+            foreach (int index in column.Value)
+              PreprocessingData.SetCell<DateTime>(column.Key, index, value);
+          } else if (stringAggregator != null && PreprocessingData.VariableHasType<string>(column.Key)) {
+            var value = stringAggregator(column.Key);
+            foreach (int index in column.Value)
+              PreprocessingData.SetCell<string>(column.Key, index, value);
+          }
+        }
+      });
+    }
+
+    private void ReplaceIndicesByValues(IDictionary<int, IList<int>> cells, Func<int, IEnumerable<double>> doubleAggregator = null,
+      Func<int, IEnumerable<DateTime>> dateTimeAggregator = null, Func<int, IEnumerable<string>> stringAggregator = null) {
+      PreprocessingData.InTransaction(() => {
+        foreach (var column in cells) {
+          if (doubleAggregator != null && PreprocessingData.VariableHasType<double>(column.Key)) {
+            var values = doubleAggregator(column.Key);
+            foreach (var pair in column.Value.Zip(values, (row, value) => new { row, value }))
+              PreprocessingData.SetCell<double>(column.Key, pair.row, pair.value);
+          } else if (dateTimeAggregator != null && PreprocessingData.VariableHasType<DateTime>(column.Key)) {
+            var values = dateTimeAggregator(column.Key);
+            foreach (var pair in column.Value.Zip(values, (row, value) => new { row, value }))
+              PreprocessingData.SetCell<DateTime>(column.Key, pair.row, pair.value);
+          } else if (stringAggregator != null && PreprocessingData.VariableHasType<string>(column.Key)) {
+            var values = stringAggregator(column.Key);
+            foreach (var pair in column.Value.Zip(values, (row, value) => new { row, value }))
+              PreprocessingData.SetCell<string>(column.Key, pair.row, pair.value);
+          }
+        }
+      });
+    }
+
+    public void ReplaceIndicesByMean(IDictionary<int, IList<int>> cells, bool considerSelection = false) {
+      ReplaceIndicesByValue(cells,
+        col => PreprocessingData.GetMean<double>(col, considerSelection),
+        col => PreprocessingData.GetMean<DateTime>(col, considerSelection));
+    }
+
+    public void ReplaceIndicesByMedianValue(IDictionary<int, IList<int>> cells, bool considerSelection = false) {
+      ReplaceIndicesByValue(cells,
+        col => PreprocessingData.GetMedian<double>(col, considerSelection),
+        col => PreprocessingData.GetMedian<DateTime>(col, considerSelection));
+    }
+
+    public void ReplaceIndicesByMode(IDictionary<int, IList<int>> cells, bool considerSelection = false) {
+      ReplaceIndicesByValue(cells,
+        col => PreprocessingData.GetMode<double>(col, considerSelection),
+        col => PreprocessingData.GetMode<DateTime>(col, considerSelection),
+        col => PreprocessingData.GetMode<string>(col, considerSelection));
+    }
+
+    public void ReplaceIndicesByRandomValue(IDictionary<int, IList<int>> cells, bool considerSelection = false) {
+      var rand = new FastRandom();
+      ReplaceIndicesByValues(cells,
+        col => {
+          double min = PreprocessingData.GetMin<double>(col, considerSelection);
+          double max = PreprocessingData.GetMax<double>(col, considerSelection);
+          double range = max - min;
+          return cells[col].Select(_ => rand.NextDouble() * range + min);
+        },
+        col => {
+          var min = PreprocessingData.GetMin<DateTime>(col, considerSelection);
+          var max = PreprocessingData.GetMax<DateTime>(col, considerSelection);
+          double range = (max - min).TotalSeconds;
+          return cells[col].Select(_ => min + TimeSpan.FromSeconds(rand.NextDouble() * range));
+        });
+    }
+
+    public void ReplaceIndicesByString(IDictionary<int, IList<int>> cells, string value) {
+      PreprocessingData.InTransaction(() => {
+        foreach (var column in cells) {
+          foreach (var rowIdx in column.Value) {
+            PreprocessingData.SetValue(value, column.Key, rowIdx);
+          }
+        }
+      });
+    }
+
+
+    public void ReplaceIndicesByLinearInterpolationOfNeighbours(IDictionary<int, IList<int>> cells) {
+      PreprocessingData.InTransaction(() => {
+        foreach (var column in cells) {
+          IList<Tuple<int, int>> startEndings = GetStartAndEndingsForInterpolation(column);
+          foreach (var tuple in startEndings) {
+            Interpolate(column, tuple.Item1, tuple.Item2);
+          }
+        }
+      });
+    }
+
+    private List<Tuple<int, int>> GetStartAndEndingsForInterpolation(KeyValuePair<int, IList<int>> column) {
+      var startEndings = new List<Tuple<int, int>>();
+      var rowIndices = column.Value.OrderBy(x => x).ToList();
+      var count = rowIndices.Count;
+      int start = int.MinValue;
+      for (int i = 0; i < count; ++i) {
+        if (start == int.MinValue) {
+          start = IndexOfPrevPresentValue(column.Key, rowIndices[i]);
+        }
+        if (i + 1 == count || (i + 1 < count && rowIndices[i + 1] - rowIndices[i] > 1)) {
+          int next = IndexOfNextPresentValue(column.Key, rowIndices[i]);
+          if (start > 0 && next < PreprocessingData.Rows) {
+            startEndings.Add(new Tuple<int, int>(start, next));
+          }
+          start = int.MinValue;
+        }
+      }
+      return startEndings;
+    }
+
+    private void Interpolate(KeyValuePair<int, IList<int>> column, int prevIndex, int nextIndex) {
+      int valuesToInterpolate = nextIndex - prevIndex;
+
+      if (PreprocessingData.VariableHasType<double>(column.Key)) {
+        double prev = PreprocessingData.GetCell<double>(column.Key, prevIndex);
+        double next = PreprocessingData.GetCell<double>(column.Key, nextIndex);
+        double interpolationStep = (next - prev) / valuesToInterpolate;
+
+        for (int i = prevIndex; i < nextIndex; ++i) {
+          double interpolated = prev + (interpolationStep * (i - prevIndex));
+          PreprocessingData.SetCell<double>(column.Key, i, interpolated);
+        }
+      } else if (PreprocessingData.VariableHasType<DateTime>(column.Key)) {
+        DateTime prev = PreprocessingData.GetCell<DateTime>(column.Key, prevIndex);
+        DateTime next = PreprocessingData.GetCell<DateTime>(column.Key, nextIndex);
+        double interpolationStep = (next - prev).TotalSeconds / valuesToInterpolate;
+
+        for (int i = prevIndex; i < nextIndex; ++i) {
+          DateTime interpolated = prev.AddSeconds(interpolationStep * (i - prevIndex));
+          PreprocessingData.SetCell<DateTime>(column.Key, i, interpolated);
+        }
+      }
+    }
+
+    private int IndexOfPrevPresentValue(int columnIndex, int start) {
+      int offset = start - 1;
+      while (offset >= 0 && PreprocessingData.IsCellEmpty(columnIndex, offset)) {
+        offset--;
+      }
+
+      return offset;
+    }
+
+    private int IndexOfNextPresentValue(int columnIndex, int start) {
+      int offset = start + 1;
+      while (offset < PreprocessingData.Rows && PreprocessingData.IsCellEmpty(columnIndex, offset)) {
+        offset++;
+      }
+
+      return offset;
+    }
+
+    public void Shuffle(bool shuffleRangesSeparately) {
+      var random = new FastRandom();
+
+      if (shuffleRangesSeparately) {
+        var ranges = new[] { PreprocessingData.TestPartition, PreprocessingData.TrainingPartition };
+        PreprocessingData.InTransaction(() => {
+          // process all given ranges - e.g. TrainingPartition, TestPartition
+          foreach (IntRange range in ranges) {
+            var indices = Enumerable.Range(0, PreprocessingData.Rows).ToArray();
+            var shuffledIndices = Enumerable.Range(range.Start, range.Size).Shuffle(random).ToArray();
+            for (int i = range.Start, j = 0; i < range.End; i++, j++)
+              indices[i] = shuffledIndices[j];
+
+            ReOrderToIndices(indices);
+          }
+        });
+
+      } else {
+        PreprocessingData.InTransaction(() => {
+          var indices = Enumerable.Range(0, PreprocessingData.Rows).ToArray();
+          indices.ShuffleInPlace(random);
+          ReOrderToIndices(indices);
+        });
+      }
+    }
+
+    public void ReOrderToIndices(int[] indices) {
+      PreprocessingData.InTransaction(() => {
+        for (int i = 0; i < PreprocessingData.Columns; ++i) {
+          if (PreprocessingData.VariableHasType<double>(i))
+            ReOrderToIndices<double>(i, indices);
+          else if (PreprocessingData.VariableHasType<string>(i))
+            ReOrderToIndices<string>(i, indices);
+          else if (PreprocessingData.VariableHasType<DateTime>(i))
+            ReOrderToIndices<DateTime>(i, indices);
+        }
+      });
+    }
+
+    private void ReOrderToIndices<T>(int columnIndex, int[] indices) {
+      var originalData = new List<T>(PreprocessingData.GetValues<T>(columnIndex));
+      if (indices.Length != originalData.Count) throw new InvalidOperationException("The number of provided indices does not match the values.");
+
+      for (int i = 0; i < indices.Length; i++) {
+        T newValue = originalData[indices[i]];
+        PreprocessingData.SetCell<T>(columnIndex, i, newValue);
+      }
+    }
+    #endregion
   }
 }
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Content/ManipulationContent.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Content/ManipulationContent.cs	(revision 15284)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Content/ManipulationContent.cs	(revision 15285)
@@ -20,5 +20,8 @@
 #endregion
 
+using System;
+using System.Collections.Generic;
 using System.Drawing;
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -33,16 +36,11 @@
     }
 
-    [Storable]
-    public ManipulationLogic ManipulationLogic { get; private set; }
-
     #region Constructor, Cloning & Persistence
-    public ManipulationContent(IFilteredPreprocessingData preprocessingData, ManipulationLogic manipulationLogic)
+    public ManipulationContent(IFilteredPreprocessingData preprocessingData)
       : base(preprocessingData) {
-      ManipulationLogic = manipulationLogic;
     }
 
     public ManipulationContent(ManipulationContent original, Cloner cloner) :
       base(original, cloner) {
-      ManipulationLogic = cloner.Clone(original.ManipulationLogic);
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -54,4 +52,75 @@
       : base(deserializing) { }
     #endregion
+
+    public List<int> RowsWithMissingValuesGreater(double percent) {
+      List<int> rows = new List<int>();
+
+      for (int i = 0; i < PreprocessingData.Rows; ++i) {
+        int missingCount = PreprocessingData.GetRowMissingValueCount(i);
+        if (100f / PreprocessingData.Columns * missingCount > percent) {
+          rows.Add(i);
+        }
+      }
+
+      return rows;
+    }
+
+    public List<int> ColumnsWithMissingValuesGreater(double percent) {
+      List<int> columns = new List<int>();
+      for (int i = 0; i < PreprocessingData.Columns; ++i) {
+        int missingCount = PreprocessingData.GetMissingValueCount(i);
+        if (100f / PreprocessingData.Rows * missingCount > percent) {
+          columns.Add(i);
+        }
+      }
+
+      return columns;
+    }
+
+    public List<int> ColumnsWithVarianceSmaller(double variance) {
+      List<int> columns = new List<int>();
+      for (int i = 0; i < PreprocessingData.Columns; ++i) {
+        if (PreprocessingData.VariableHasType<double>(i)) {
+          double columnVariance = PreprocessingData.GetVariance<double>(i);
+          if (columnVariance < variance) {
+            columns.Add(i);
+          }
+        } else if (PreprocessingData.VariableHasType<DateTime>(i)) {
+          double columnVariance = (double)PreprocessingData.GetVariance<DateTime>(i).Ticks / TimeSpan.TicksPerSecond;
+          if (columnVariance < variance) {
+            columns.Add(i);
+          }
+        }
+      }
+      return columns;
+    }
+
+    public void DeleteRowsWithMissingValuesGreater(double percent) {
+      DeleteRows(RowsWithMissingValuesGreater(percent));
+    }
+
+    public void DeleteColumnsWithMissingValuesGreater(double percent) {
+      DeleteColumns(ColumnsWithMissingValuesGreater(percent));
+    }
+
+    public void DeleteColumnsWithVarianceSmaller(double variance) {
+      DeleteColumns(ColumnsWithVarianceSmaller(variance));
+    }
+
+    private void DeleteRows(List<int> rows) {
+      PreprocessingData.InTransaction(() => {
+        foreach (int row in rows.OrderByDescending(x => x)) {
+          PreprocessingData.DeleteRow(row);
+        }
+      });
+    }
+
+    private void DeleteColumns(List<int> columns) {
+      PreprocessingData.InTransaction(() => {
+        foreach (int column in columns.OrderByDescending(x => x)) {
+          PreprocessingData.DeleteColumn(column);
+        }
+      });
+    }
   }
 }
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Data/PreprocessingData.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Data/PreprocessingData.cs	(revision 15284)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Data/PreprocessingData.cs	(revision 15285)
@@ -151,5 +151,10 @@
       if (VariableHasType<double>(columnIndex)) {
         double val;
-        valid = double.TryParse(value, out val);
+        if (string.IsNullOrWhiteSpace(value)) {
+          val = double.NaN;
+          valid = true;
+        } else {
+          valid = double.TryParse(value, out val);
+        }
         if (valid)
           SetCell(columnIndex, rowIndex, val);
@@ -357,8 +362,12 @@
       errorMessage = string.Empty;
       if (VariableHasType<double>(columnIndex)) {
-        double val;
-        valid = double.TryParse(value, out val);
-        if (!valid) {
-          errorMessage = "Invalid Value (Valid Value Format: \"" + FormatPatterns.GetDoubleFormatPattern() + "\")";
+        if (string.IsNullOrWhiteSpace(value)) {
+          valid = true;
+        } else {
+          double val;
+          valid = double.TryParse(value, out val);
+          if (!valid) {
+            errorMessage = "Invalid Value (Valid Value Format: \"" + FormatPatterns.GetDoubleFormatPattern() + "\")";
+          }
         }
       } else if (VariableHasType<string>(columnIndex)) {
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Filter/ComparisonFilter.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Filter/ComparisonFilter.cs	(revision 15285)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Filter/ComparisonFilter.cs	(revision 15285)
@@ -0,0 +1,139 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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;
+using System.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.Common.Resources;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.DataPreprocessing.Filter {
+  [Item("ComparisonFilter", "A filter which compares the member of the preprocessing data with the constraint data.")]
+  public class ComparisonFilter : ComparisonConstraint, IFilter {
+    public override string ItemName {
+      get { return "ComparisonFilter"; }
+    }
+
+    public override Image ItemImage {
+      get { return VSImageLibrary.Filter; }
+    }
+
+    public new IPreprocessingData ConstrainedValue {
+      get { return (IPreprocessingData)base.ConstrainedValue; }
+      set { base.ConstrainedValue = value; }
+    }
+
+    public new IStringConvertibleValue ConstraintData {
+      get { return (IStringConvertibleValue)base.ConstraintData; }
+      set {
+        if (!(value is IComparable))
+          throw new ArgumentException("Only IComparables allowed for ConstraintData");
+        base.ConstraintData = value;
+      }
+    }
+
+    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;
+    public int ConstraintColumn {
+      get { return constraintColumn; }
+      set {
+        if (ConstrainedValue.Columns < value)
+          throw new ArgumentException("Could not set ConstraintData to not existing column index.");
+
+        if (constraintColumn != value) {
+          constraintColumn = value;
+          this.OnConstraintColumnChanged();
+          this.OnToStringChanged();
+        }
+      }
+    }
+
+    public new bool[] Check() {
+      bool[] result = new bool[ConstrainedValue.Rows];
+
+      if (!Active)
+        return result;
+
+      for (int row = 0; row < ConstrainedValue.Rows; ++row) {
+        object item = null;
+        if (ConstrainedValue.VariableHasType<double>(constraintColumn)) {
+          item = new HeuristicLab.Data.DoubleValue(ConstrainedValue.GetCell<double>(ConstraintColumn, row));
+        } else if (ConstrainedValue.VariableHasType<DateTime>(constraintColumn)) {
+          item = new HeuristicLab.Data.DateTimeValue(ConstrainedValue.GetCell<DateTime>(ConstraintColumn, row));
+        } else {
+          item = new StringValue(ConstrainedValue.GetCell<string>(ConstraintColumn, row));
+        }
+
+        result[row] = !base.Check(item);
+      }
+
+      return result;
+    }
+
+    public new bool[] Check(out string errorMessage) {
+      errorMessage = string.Empty;
+      return this.Check();
+    }
+
+    public override string ToString() {
+      string s = string.Empty;
+      if (ConstrainedValue != null)
+        s += ConstrainedValue.GetVariableName(ConstraintColumn) + " ";
+
+      if (ConstraintOperation != null)
+        s += ConstraintOperation.ToString() + " ";
+
+      if (ConstraintData != null)
+        s += ConstraintData.ToString();
+      else
+        s += "null";
+
+      s += ".";
+      return s;
+    }
+
+    public event EventHandler ConstraintColumnChanged;
+    protected virtual void OnConstraintColumnChanged() {
+      EventHandler handler = ConstraintColumnChanged;
+      if (handler != null)
+        handler(this, EventArgs.Empty);
+    }
+  }
+}
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Filter/IFilter.cs
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Filter/IFilter.cs	(revision 15285)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Filter/IFilter.cs	(revision 15285)
@@ -0,0 +1,29 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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 HeuristicLab.Core;
+
+namespace HeuristicLab.DataPreprocessing.Filter {
+  public interface IFilter : IConstraint {
+    new bool[] Check();
+    new bool[] Check(out string errorMessage);
+  }
+}
Index: branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/HeuristicLab.DataPreprocessing-3.4.csproj
===================================================================
--- branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/HeuristicLab.DataPreprocessing-3.4.csproj	(revision 15284)
+++ branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/HeuristicLab.DataPreprocessing-3.4.csproj	(revision 15285)
@@ -131,7 +131,6 @@
     <Compile Include="PreprocessingTransformator.cs" />
     <Compile Include="Data\DataPreprocessingChangedEvent.cs" />
-    <Compile Include="Logic\Filter\ComparisonFilter.cs" />
-    <Compile Include="Logic\Filter\IFilter.cs" />
-    <Compile Include="Logic\ManipulationLogic.cs" />
+    <Compile Include="Filter\ComparisonFilter.cs" />
+    <Compile Include="Filter\IFilter.cs" />
     <Compile Include="Data\IPreprocessingData.cs" />
     <Compile Include="Content\FilterContent.cs" />
@@ -152,4 +151,5 @@
     <None Include="HeuristicLab.snk" />
   </ItemGroup>
+  <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
