Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/CheckedFilterCollectionView.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/CheckedFilterCollectionView.cs	(revision 15011)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/CheckedFilterCollectionView.cs	(revision 15012)
@@ -34,11 +34,4 @@
       InitializeComponent();
     }
-
-    protected override void addButton_Click(object sender, EventArgs e) {
-      IFilter filter = new ComparisonFilter();
-      Content.Add(filter);
-      Content.SetItemCheckedState(filter, false);
-    }
-
   }
 }
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/HeuristicLab.DataPreprocessing.Views-3.4.csproj
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/HeuristicLab.DataPreprocessing.Views-3.4.csproj	(revision 15011)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing.Views/3.4/HeuristicLab.DataPreprocessing.Views-3.4.csproj	(revision 15012)
@@ -178,9 +178,9 @@
   <ItemGroup>
     <Compile Include="DataPreprocessingMenuItem.cs" />
-    <Compile Include="PreprocessingChartView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="PreprocessingChartView.Designer.cs">
-      <DependentUpon>PreprocessingChartView.cs</DependentUpon>
+    <Compile Include="PreprocessingCheckedVariablesView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="PreprocessingCheckedVariablesView.Designer.cs">
+      <DependentUpon>PreprocessingCheckedVariablesView.cs</DependentUpon>
     </Compile>
     <Compile Include="PreprocessingFeatureCorrelationView.cs">
@@ -281,9 +281,9 @@
     </Compile>
     <Compile Include="Plugin.cs" />
-    <Compile Include="PreprocessingCheckedVariablesView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="PreprocessingCheckedVariablesView.Designer.cs">
-      <DependentUpon>PreprocessingCheckedVariablesView.cs</DependentUpon>
+    <Compile Include="PreprocessingChartView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="PreprocessingChartView.Designer.cs">
+      <DependentUpon>PreprocessingChartView.cs</DependentUpon>
     </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Data/PreprocessingData.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Data/PreprocessingData.cs	(revision 15011)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Data/PreprocessingData.cs	(revision 15012)
@@ -145,5 +145,5 @@
 
     private void CheckPartitionRanges() {
-      int maxRowIndex = Math.Max(0, Rows - 1);
+      int maxRowIndex = Math.Max(0, Rows);
       TrainingPartition.Start = Math.Min(TrainingPartition.Start, maxRowIndex);
       TrainingPartition.End = Math.Min(TrainingPartition.End, maxRowIndex);
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/HeuristicLab.DataPreprocessing-3.4.csproj
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/HeuristicLab.DataPreprocessing-3.4.csproj	(revision 15011)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/HeuristicLab.DataPreprocessing-3.4.csproj	(revision 15012)
@@ -126,4 +126,8 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Random-3.3.dll</HintPath>
     </Reference>
     <Reference Include="HeuristicLab.Visualization.ChartControlsExtensions-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Logic/ManipulationLogic.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Logic/ManipulationLogic.cs	(revision 15011)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Logic/ManipulationLogic.cs	(revision 15012)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Data;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.DataPreprocessing {
@@ -81,5 +82,5 @@
     public void ReplaceIndicesByRandomValue(IDictionary<int, IList<int>> cells, bool considerSelection = false) {
       preprocessingData.InTransaction(() => {
-        Random r = new Random();
+        System.Random r = new System.Random();
 
         foreach (var column in cells) {
@@ -219,41 +220,30 @@
 
     public void Shuffle(bool shuffleRangesSeparately) {
-      Random random = new Random();
-      var ranges = new[] { preprocessingData.TestPartition, preprocessingData.TrainingPartition };
+      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) {
-            List<Tuple<int, int>> shuffledIndices = new List<Tuple<int, int>>();
-
-            // generate random indices used for shuffeling each column
-            for (int i = range.End - 1; i >= range.Start; --i) {
-              int rand = random.Next(range.Start, i);
-              shuffledIndices.Add(new Tuple<int, int>(i, rand));
-            }
-
-            ShuffleToIndices(shuffledIndices);
+            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 = ranges.SelectMany(x => Enumerable.Range(x.Start, x.Size)).ToList();
-          var shuffledIndices = indices.OrderBy(x => random.Next());
-          ShuffleToIndices(indices.Zip(shuffledIndices, (i, j) => new Tuple<int, int>(i, j)).ToList());
+          var indices = Enumerable.Range(0, preprocessingData.Rows);
+          var shuffledIndices = indices.Shuffle(random).ToArray();
+          ReOrderToIndices(shuffledIndices);
         });
       }
     }
 
-    public void ReOrderToIndices(IEnumerable<int> indices) {
-      List<Tuple<int, int>> indicesTuple = new List<Tuple<int, int>>();
-
-      for (int i = 0; i < indices.Count(); ++i) {
-        indicesTuple.Add(new Tuple<int, int>(i, indices.ElementAt(i)));
-      }
-
-      ReOrderToIndices(indicesTuple);
-    }
-
-    public void ReOrderToIndices(IList<System.Tuple<int, int>> indices) {
+    public void ReOrderToIndices(int[] indices) {
       preprocessingData.InTransaction(() => {
         for (int i = 0; i < preprocessingData.Columns; ++i) {
@@ -269,42 +259,14 @@
     }
 
-    public void ShuffleToIndices(IList<System.Tuple<int, int>> indices) {
-      preprocessingData.InTransaction(() => {
-        for (int i = 0; i < preprocessingData.Columns; ++i) {
-          if (preprocessingData.VariableHasType<double>(i)) {
-            ShuffleToIndices<double>(i, indices);
-          } else if (preprocessingData.VariableHasType<string>(i)) {
-            ShuffleToIndices<string>(i, indices);
-          } else if (preprocessingData.VariableHasType<DateTime>(i)) {
-            ShuffleToIndices<DateTime>(i, indices);
-          }
-        }
-      });
-    }
-
-    private void ReOrderToIndices<T>(int columnIndex, IList<Tuple<int, int>> indices) {
+    private void ReOrderToIndices<T>(int columnIndex, int[] indices) {
       List<T> originalData = new List<T>(preprocessingData.GetValues<T>(columnIndex));
-
-      // process all columns equally
-      foreach (Tuple<int, int> index in indices) {
-        int originalIndex = index.Item1;
-        int replaceIndex = index.Item2;
+      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++) {
+        int originalIndex = i;
+        int replaceIndex = indices[i];
 
         T replaceValue = originalData.ElementAt<T>(replaceIndex);
         preprocessingData.SetCell<T>(columnIndex, originalIndex, replaceValue);
-      }
-    }
-
-    private void ShuffleToIndices<T>(int columnIndex, IList<Tuple<int, int>> indices) {
-      // process all columns equally
-      foreach (Tuple<int, int> index in indices) {
-        int originalIndex = index.Item1;
-        int replaceIndex = index.Item2;
-
-        T tmp = preprocessingData.GetCell<T>(columnIndex, originalIndex);
-        T replaceValue = preprocessingData.GetCell<T>(columnIndex, replaceIndex);
-
-        preprocessingData.SetCell<T>(columnIndex, originalIndex, replaceValue);
-        preprocessingData.SetCell<T>(columnIndex, replaceIndex, tmp);
       }
     }
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Plugin.cs.frame
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Plugin.cs.frame	(revision 15011)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/Plugin.cs.frame	(revision 15012)
@@ -37,4 +37,5 @@
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
   [PluginDependency("HeuristicLab.Problems.DataAnalysis","3.4")]
+  [PluginDependency("HeuristicLab.Random", "3.3")]
   [PluginDependency("HeuristicLab.Visualization.ChartControlsExtensions", "3.3")]
   public class HeuristicLabDataPreprocessingPlugin : PluginBase {
Index: branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/PreprocessingTransformator.cs
===================================================================
--- branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/PreprocessingTransformator.cs	(revision 15011)
+++ branches/DataPreprocessing Enhancements/HeuristicLab.DataPreprocessing/3.4/PreprocessingTransformator.cs	(revision 15012)
@@ -113,5 +113,5 @@
       // don't apply when the check fails
       if (success)
-        return transformation.Apply(data);
+        return transformation.ConfigureAndApply(data);
       else
         return data;
