Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/HeuristicLab.Problems.DataAnalysis.Transformations-3.3.csproj
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/HeuristicLab.Problems.DataAnalysis.Transformations-3.3.csproj	(revision 10765)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/HeuristicLab.Problems.DataAnalysis.Transformations-3.3.csproj	(revision 10770)
@@ -44,12 +44,43 @@
     <Reference Include="System" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Transformation.cs" />
     <None Include="HeuristicLab.snk" />
     <None Include="Plugin.cs.frame" />
+    <Compile Include="Interfaces\ITransformation.cs" />
+    <Compile Include="LinearTransformation.cs" />
     <Compile Include="Plugin.cs" />
     <None Include="Properties\AssemblyInfo.cs.frame" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">
+      <Project>{958b43bc-cc5c-4fa2-8628-2b3b01d890b6}</Project>
+      <Name>HeuristicLab.Collections-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">
+      <Project>{a9ad58b9-3ef9-4cc1-97e5-8d909039ff5c}</Project>
+      <Name>HeuristicLab.Common-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{c36bd924-a541-4a00-afa8-41701378ddc5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">
+      <Project>{bbab9df5-5ef3-4ba8-ade9-b36e82114937}</Project>
+      <Name>HeuristicLab.Data-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
+      <Project>{56f9106a-079f-4c61-92f6-86a84c2d84b7}</Project>
+      <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>
+  </ItemGroup>
+  <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/Interfaces/ITransformation.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/Interfaces/ITransformation.cs	(revision 10770)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/Interfaces/ITransformation.cs	(revision 10770)
@@ -0,0 +1,33 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 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.Collections.Generic;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Problems.DataAnalysis {
+  public interface ITransformation : IParameterizedItem {
+    string Column { get; }
+  }
+
+  public interface ITransformation<T> : ITransformation {
+    IEnumerable<T> Apply(IEnumerable<T> data);
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/LinearTransformation.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/LinearTransformation.cs	(revision 10770)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/LinearTransformation.cs	(revision 10770)
@@ -0,0 +1,92 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 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.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.DataAnalysis.Transformations {
+  [Item("LinearTransformation", "Represents a linear transformation with multiplication and addition.")]
+  public class LinearTransformation : Transformation<double> {
+    protected const string MultiplicandParameterName = "Multiplicand";
+    protected const string SummandParameterName = "Summand";
+
+    #region Parameters
+    public IValueParameter<DoubleValue> MultiplicandParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters[MultiplicandParameterName]; }
+    }
+    public IValueParameter<DoubleValue> SummandParameter {
+      get { return (IValueParameter<DoubleValue>)Parameters[SummandParameterName]; }
+    }
+    #endregion
+
+    #region properties
+    public double Multiplicand {
+      get { return MultiplicandParameter.Value.Value; }
+    }
+
+    public double Summand {
+      get { return SummandParameter.Value.Value; }
+    }
+    #endregion
+
+    [StorableConstructor]
+    protected LinearTransformation(bool deserializing) : base(deserializing) { }
+    protected LinearTransformation(Transformation<double> original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    protected LinearTransformation() {
+    }
+    public LinearTransformation(IEnumerable<string> allowedColumns)
+      : base(allowedColumns) {
+      Parameters.Add(new ValueParameter<DoubleValue>(MultiplicandParameterName, "Multiplicand for linear transformation", new DoubleValue(1.0)));
+      Parameters.Add(new ValueParameter<DoubleValue>(SummandParameterName, "Summand for linear transformation", new DoubleValue(0.0)));
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new LinearTransformation(this, cloner);
+    }
+
+    public override IEnumerable<double> Apply(IEnumerable<double> data) {
+      return data.Select(e => e * Multiplicand + Summand);
+    }
+
+    public override bool Check(IEnumerable<double> data, out string errorMsg) {
+      StringBuilder sb = new StringBuilder();
+      bool success = true;
+      errorMsg = null;
+
+      if (Multiplicand == 0.0) {
+        sb.Append(String.Format("Multiplicand is 0, all {0} entries will be set to {1}. Reversal will not be possble", data.Count(), Summand));
+        errorMsg = sb.ToString();
+        success = false;
+      }
+      return success;
+    }
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/Plugin.cs.frame
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/Plugin.cs.frame	(revision 10765)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/Plugin.cs.frame	(revision 10770)
@@ -28,4 +28,8 @@
   [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabProblemsDataAnalysisTransformationsPlugin : PluginBase {
   }
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/Transformation.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/Transformation.cs	(revision 10770)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Transformations/3.3/Transformation.cs	(revision 10770)
@@ -0,0 +1,60 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 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.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.DataAnalysis.Transformations {
+  [Item("Transformation", "Represents the base class for a transformation.")]
+  [StorableClass]
+  public abstract class Transformation<T> : ParameterizedNamedItem, ITransformation<T> {
+    protected const string ColumnParameterName = "Column";
+    #region parameter properties
+    public IConstrainedValueParameter<StringValue> ColumnParameter {
+      get { return (IConstrainedValueParameter<StringValue>)Parameters[ColumnParameterName]; }
+    }
+    #endregion
+
+    #region properties
+    public string Column {
+      get { return ColumnParameter.Value.Value; }
+    }
+    #endregion
+
+    [StorableConstructor]
+    protected Transformation(bool deserializing) : base(deserializing) { }
+    protected Transformation(Transformation<T> original, Cloner cloner) : base(original, cloner) { }
+    protected Transformation() { }
+    protected Transformation(IEnumerable<string> allowedColumns) {
+      var allowed = new ItemSet<StringValue>(allowedColumns.Select(e => new StringValue(e)));
+      Parameters.Add(new ConstrainedValueParameter<StringValue>(ColumnParameterName, "Column used for the Transformation", allowed));
+    }
+
+    public abstract IEnumerable<T> Apply(IEnumerable<T> data);
+
+    public abstract bool Check(IEnumerable<T> data, out string errorMsg);
+  }
+}
