Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataPreprocessorStarter.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataPreprocessorStarter.cs	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataPreprocessorStarter.cs	(revision 10673)
@@ -26,4 +26,5 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.DataAnalysis.Symbolic;
 using HeuristicLab.Problems.DataAnalysis.Views;
 using View = HeuristicLab.MainForm.WindowsForms.View;
@@ -34,5 +35,5 @@
     public void Start(IDataAnalysisProblemData problemData, View currentView) {
       IAlgorithm algorithm;
-      IDataAnalysisProblem problem;
+      ISymbolicDataAnalysisProblem problem;
       IItem parentItem = GetMostOuterContent(currentView, out algorithm, out problem);
       var context = new PreprocessingContext(problemData, algorithm, problem);
@@ -40,5 +41,5 @@
     }
 
-    private IItem GetMostOuterContent(Control control, out IAlgorithm algorithm, out IDataAnalysisProblem problem) {
+    private IItem GetMostOuterContent(Control control, out IAlgorithm algorithm, out ISymbolicDataAnalysisProblem problem) {
       algorithm = null;
       problem = null;
@@ -51,6 +52,6 @@
             algorithm = (IAlgorithm)itemView.Content;
           }
-          if (itemView.Content is IDataAnalysisProblem) {
-            problem = (IDataAnalysisProblem)itemView.Content;
+          if (itemView.Content is ISymbolicDataAnalysisProblem) {
+            problem = (ISymbolicDataAnalysisProblem)itemView.Content;
           }
         }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HeuristicLab.DataPreprocessing.Views-3.3.csproj
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HeuristicLab.DataPreprocessing.Views-3.3.csproj	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HeuristicLab.DataPreprocessing.Views-3.3.csproj	(revision 10673)
@@ -214,4 +214,8 @@
       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Symbolic\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj">
+      <Project>{3d28463f-ec96-4d82-afee-38be91a0ca00}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis.Symbolic-3.4</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Views\3.4\HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj">
       <Project>{3E9E8944-44FF-40BB-A622-3A4A7DD0F198}</Project>
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Plugin.cs.frame
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Plugin.cs.frame	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/Plugin.cs.frame	(revision 10673)
@@ -34,4 +34,5 @@
   [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")] 
   [PluginDependency("HeuristicLab.Problems.DataAnalysis.Views","3.4")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic", "3.4")]
   public class HeuristicLabDataPreprocessingPlugin : PluginBase {
   }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10673)
@@ -160,4 +160,8 @@
       <Private>False</Private>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Symbolic\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj">
+      <Project>{3d28463f-ec96-4d82-afee-38be91a0ca00}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis.Symbolic-3.4</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
       <Project>{df87c13e-a889-46ff-8153-66dcaa8c5674}</Project>
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/PreprocessingContext.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/PreprocessingContext.cs	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/PreprocessingContext.cs	(revision 10673)
@@ -23,6 +23,8 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.Optimization;
 using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.DataAnalysis.Symbolic;
 
 namespace HeuristicLab.DataPreprocessing {
@@ -37,7 +39,7 @@
     public IAlgorithm Algorithm { get; private set; }
 
-    public IDataAnalysisProblem Problem { get; private set; }
+    public ISymbolicDataAnalysisProblem Problem { get; private set; }
 
-    public PreprocessingContext(IDataAnalysisProblemData dataAnalysisProblemData, IAlgorithm algorithm, IDataAnalysisProblem problem) {
+    public PreprocessingContext(IDataAnalysisProblemData dataAnalysisProblemData, IAlgorithm algorithm, ISymbolicDataAnalysisProblem problem) {
       Data = new TransactionalPreprocessingData(dataAnalysisProblemData);
       DataAnalysisProblemData = dataAnalysisProblemData;
@@ -72,13 +74,13 @@
     }
 
-    private IDataAnalysisProblem SetupProblem(IProblem problem) {
-      return (IDataAnalysisProblem)problem;
+    private ISymbolicDataAnalysisProblem SetupProblem(IProblem problem) {
+      return (ISymbolicDataAnalysisProblem)problem;
     }
-    private IDataAnalysisProblem SetupAlgorithm(IAlgorithm algorithm) {
+    private ISymbolicDataAnalysisProblem SetupAlgorithm(IAlgorithm algorithm) {
       algorithm.Name = algorithm.Name + "(Preprocessed)";
       algorithm.Runs.Clear();
-      return (IDataAnalysisProblem)algorithm.Problem;
+      return (ISymbolicDataAnalysisProblem)algorithm.Problem;
     }
-    private T Export<T>(T original, Func<T, IDataAnalysisProblem> setup)
+    private T Export<T>(T original, Func<T, ISymbolicDataAnalysisProblem> setup)
         where T : IItem {
       var creator = new ProblemDataCreator(this);
@@ -91,4 +93,11 @@
       problem.Name = "Preprocessed " + problem.Name;
 
+      var tree = new SymbolicExpressionTree(new ProgramRootSymbol().CreateTreeNode());
+      var variableNode = (VariableTreeNode)new HeuristicLab.Problems.DataAnalysis.Symbolic.Variable("dummy", "dummy description").CreateTreeNode();
+      variableNode.VariableName = "dummy";
+      tree.Root.AddSubtree(variableNode);
+
+      problem.TransformationsParameter.Value.Add(tree);
+
       return clone;
     }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IPreprocessingContext.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IPreprocessingContext.cs	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IPreprocessingContext.cs	(revision 10673)
@@ -24,4 +24,5 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.DataAnalysis.Symbolic;
 
 namespace HeuristicLab.DataPreprocessing {
@@ -36,5 +37,5 @@
     IAlgorithm Algorithm { get; }
 
-    IDataAnalysisProblem Problem { get; }
+    ISymbolicDataAnalysisProblem Problem { get; }
 
     IItem ExportAlgorithmOrProblem();
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Plugin.cs.frame
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Plugin.cs.frame	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Plugin.cs.frame	(revision 10673)
@@ -41,6 +41,7 @@
   [PluginDependency("HeuristicLab.Problems.DataAnalysis","3.4")]
   [PluginDependency("HeuristicLab.Problems.DataAnalysis.Views","3.4")]
-  [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding","3.4")]
-  [PluginDependency("HeuristicLab.Parameters","3.4")]
+  [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic", "3.4")]
+  [PluginDependency("HeuristicLab.Parameters","3.3")]
   public class HeuristicLabDataPreprocessingPlugin : PluginBase {
   }
Index: /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj	(revision 10673)
@@ -221,4 +221,5 @@
     <Compile Include="Symbols\VariableConditionTreeNode.cs" />
     <Compile Include="Symbols\VariableTreeNode.cs" />
+    <Compile Include="TransformationCollection.cs" />
     <None Include="HeuristicLab.snk" />
     <None Include="Plugin.cs.frame" />
Index: /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interfaces/ISymbolicDataAnalysisProblem.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interfaces/ISymbolicDataAnalysisProblem.cs	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interfaces/ISymbolicDataAnalysisProblem.cs	(revision 10673)
@@ -35,4 +35,5 @@
     IFixedValueParameter<IntRange> FitnessCalculationPartitionParameter { get; }
     IFixedValueParameter<IntRange> ValidationPartitionParameter { get; }
+    IFixedValueParameter<TransformationCollection> TransformationsParameter { get; }
 
     ISymbolicDataAnalysisGrammar SymbolicExpressionTreeGrammar { get; set; }
Index: /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 10672)
+++ /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs	(revision 10673)
@@ -54,4 +54,5 @@
     private const string ValidationPartitionParameterName = "ValidationPartition";
     private const string ApplyLinearScalingParameterName = "ApplyLinearScaling";
+    private const string TransformationsParameterName = "Transformations";
 
     private const string ProblemDataParameterDescription = "";
@@ -66,4 +67,5 @@
     private const string ValidationPartitionParameterDescription = "The partition of the problem data training partition, that should be used to select the best model from (optional).";
     private const string ApplyLinearScalingParameterDescription = "Flag that indicates if the individual should be linearly scaled before evaluating.";
+    private const string TransformationsParameterDescrioption = "The transformations which were applied on the input variables.";
     #endregion
 
@@ -104,4 +106,7 @@
     public IFixedValueParameter<BoolValue> ApplyLinearScalingParameter {
       get { return (IFixedValueParameter<BoolValue>)Parameters[ApplyLinearScalingParameterName]; }
+    }
+    public IFixedValueParameter<TransformationCollection> TransformationsParameter {
+      get { return (IFixedValueParameter<TransformationCollection>)Parameters[TransformationsParameterName]; }
     }
     #endregion
@@ -167,4 +172,9 @@
         if (GetType().Name.Contains("SymbolicRegression"))
           ApplyLinearScaling.Value = true;
+      }
+
+      if (!Parameters.ContainsKey(TransformationsParameterName)) {
+        Parameters.Add(new FixedValueParameter<TransformationCollection>(TransformationsParameterName, TransformationsParameterDescrioption, new TransformationCollection()));
+        TransformationsParameter.Hidden = true;
       }
 
@@ -189,4 +199,5 @@
       Parameters.Add(new FixedValueParameter<PercentValue>(RelativeNumberOfEvaluatedSamplesParameterName, RelativeNumberOfEvaluatedSamplesParameterDescription, new PercentValue(1)));
       Parameters.Add(new FixedValueParameter<BoolValue>(ApplyLinearScalingParameterName, ApplyLinearScalingParameterDescription, new BoolValue(false)));
+      Parameters.Add(new FixedValueParameter<TransformationCollection>(TransformationsParameterName, TransformationsParameterDescrioption, new TransformationCollection()));
 
       SymbolicExpressionTreeInterpreterParameter.Hidden = true;
@@ -194,4 +205,5 @@
       MaximumFunctionDefinitionsParameter.Hidden = true;
       ApplyLinearScalingParameter.Hidden = true;
+      TransformationsParameter.Hidden = true;
 
       SymbolicExpressionTreeGrammar = new TypeCoherentExpressionGrammar();
Index: /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/TransformationCollection.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/TransformationCollection.cs	(revision 10673)
+++ /branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/TransformationCollection.cs	(revision 10673)
@@ -0,0 +1,48 @@
+﻿#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.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Problems.DataAnalysis.Symbolic {
+
+  public class TransformationCollection : KeyedItemCollection<string, ISymbolicExpressionTree> {
+    [StorableConstructor]
+    protected TransformationCollection(bool deserializing) : base(deserializing) { }
+    protected TransformationCollection(TransformationCollection original, Cloner cloner)
+      : base(original, cloner) {
+    }
+    public TransformationCollection() : base() { }
+    public TransformationCollection(int capacity) : base(capacity) { }
+
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new TransformationCollection(this, cloner);
+    }
+
+    protected override string GetKeyForItem(ISymbolicExpressionTree item) {
+      return item.IterateNodesBreadth().OfType<VariableTreeNode>().Single().Symbol.Name;
+    }
+  }
+}
