Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10692)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10694)
@@ -155,4 +155,8 @@
       <Name>HeuristicLab.Parameters-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102bc7d3-0ef9-439c-8f6d-96ff0fdb8e1b}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
       <Project>{94186a6a-5176-4402-ae83-886557b53cca}</Project>
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Transformations/LinearTransformation.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Transformations/LinearTransformation.cs	(revision 10692)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Transformations/LinearTransformation.cs	(revision 10694)
@@ -20,14 +20,15 @@
 #endregion
 
+
+using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Data;
 using HeuristicLab.DataPreprocessing.Transformations;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.Parameters;
-
 namespace HeuristicLab.DataPreprocessing.Implementations.Transformations {
   [Item("LinearTransformation", "Represents a linear transformation with multiplication and addition.")]
-  public class LinearTransformation : Transformation {
+  public class LinearTransformation : Transformation<double> {
 
     #region Parameters
@@ -46,25 +47,17 @@
     }
 
-    public override void Transform() {
-      PreprocessingData.InTransaction(() => {
-        int idx = PreprocessingData.GetColumnIndex(Column);
-        if (PreprocessingData.IsType<double>(idx)) {
-          var column = PreprocessingData.GetValues<double>(idx);
-          var transformedColumn = column.Select(e => e * MultiplicandParameter.Value.Value + SummandParameter.Value.Value).ToList();
-          PreprocessingData.SetValues<double>(idx, transformedColumn);
-        }
-      },
-      DataPreprocessingChangedEventType.Transformation);
+    public override IEnumerable<double> Apply(IEnumerable<double> data) {
+      return data.Select(e => e * MultiplicandParameter.Value.Value + SummandParameter.Value.Value).ToList();
     }
 
-    public override ISymbolicExpressionTree GenerateInverseTransformation() {
+    public override IEnumerable<double> InverseApply(IEnumerable<double> data) {
       throw new System.NotImplementedException();
     }
 
-    public override void Check() {
+    public override IDeepCloneable Clone(Cloner cloner) {
       throw new System.NotImplementedException();
     }
 
-    public override Common.IDeepCloneable Clone(Common.Cloner cloner) {
+    public override void Check(IEnumerable<double> data) {
       throw new System.NotImplementedException();
     }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Transformations/Transformation.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Transformations/Transformation.cs	(revision 10692)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Transformations/Transformation.cs	(revision 10694)
@@ -20,40 +20,32 @@
 #endregion
 
+using System.Collections.Generic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.DataAnalysis;
 
 namespace HeuristicLab.DataPreprocessing.Transformations {
   [Item("Transformation", "Represents the base class for a transformation.")]
-  public abstract class Transformation : ParameterizedNamedItem {
+  [StorableClass]
+  public abstract class Transformation<T> : ParameterizedNamedItem, ITransformation<T> {
+    public string Column { get; private set; }
 
-    protected new ParameterCollection Parameters {
-      get { return base.Parameters; }
+    [StorableConstructor]
+    protected Transformation(bool deserializing) : base(deserializing) { }
+    protected Transformation(Transformation<T> original, Cloner cloner)
+      : base(original, cloner) {
+      Column = original.Column;
     }
-
-    protected ITransactionalPreprocessingData PreprocessingData { get; private set; }
-
-    protected string Column { get; private set; }
-
-    protected Transformation() {
-    }
-
-    protected Transformation(ITransactionalPreprocessingData preprocessingData, string column) {
-      this.PreprocessingData = preprocessingData;
+    protected Transformation() { }
+    protected Transformation(string column) {
       this.Column = column;
     }
 
-    protected Transformation(Transformation original, Cloner cloner)
-      : base(original, cloner) {
-      PreprocessingData = (ITransactionalPreprocessingData)original.PreprocessingData.Clone();
-      Column = original.Column;
-    }
+    public abstract IEnumerable<T> Apply(IEnumerable<T> data);
 
-    public abstract void Transform();
+    public abstract IEnumerable<T> InverseApply(IEnumerable<T> data);
 
-    public abstract ISymbolicExpressionTree GenerateInverseTransformation();
-
-    public abstract void Check();
-
+    public abstract void Check(IEnumerable<T> data);
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Plugin.cs.frame
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Plugin.cs.frame	(revision 10692)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Plugin.cs.frame	(revision 10694)
@@ -44,4 +44,5 @@
   [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic", "3.4")]
   [PluginDependency("HeuristicLab.Parameters","3.3")]
+  [PluginDependency("HeuristicLab.Persistence","3.3")]
   public class HeuristicLabDataPreprocessingPlugin : PluginBase {
   }
