Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataPreprocessorStarter.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataPreprocessorStarter.cs	(revision 10306)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataPreprocessorStarter.cs	(revision 10307)
@@ -34,11 +34,13 @@
     public void Start(IDataAnalysisProblemData problemData, View currentView) {
       IAlgorithm algorithm;
-      IItem parentItem = GetMostOuterContent(currentView, out algorithm);
-      var context = new PreprocessingContext(problemData, parentItem, algorithm);
+      IProblem problem;
+      IItem parentItem = GetMostOuterContent(currentView, out algorithm, out problem);
+      var context = new PreprocessingContext(problemData, parentItem, algorithm, problem);
       MainFormManager.MainForm.ShowContent(context);
     }
 
-    private IItem GetMostOuterContent(Control control, out IAlgorithm algorithm) {
+    private IItem GetMostOuterContent(Control control, out IAlgorithm algorithm, out IProblem problem) {
       algorithm = null;
+      problem = null;
       ItemView itemView = null;
       do {
@@ -49,4 +51,7 @@
             algorithm = (IAlgorithm)itemView.Content;
           }
+          if (itemView.Content is IProblem) {
+            problem = (IProblem)itemView.Content;
+          }
         }
       } while (control != null);
@@ -54,6 +59,4 @@
       return itemView.Content;
     }
-
   }
-
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/PreprocessingContext.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/PreprocessingContext.cs	(revision 10306)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/PreprocessingContext.cs	(revision 10307)
@@ -28,9 +28,10 @@
   [Item("PreprocessingContext", "PreprocessingContext")]
   public class PreprocessingContext : Item, IPreprocessingContext {
-    public PreprocessingContext(IDataAnalysisProblemData dataAnalysisProblemData, IItem parentItem, IAlgorithm algorithm) {
+    public PreprocessingContext(IDataAnalysisProblemData dataAnalysisProblemData, IItem parentItem, IAlgorithm algorithm, IProblem problem) {
       Data = new PreprocessingData(dataAnalysisProblemData);
       ParentItem = parentItem;
       DataAnalysisProblemData = dataAnalysisProblemData;
       Algorithm = algorithm;
+      Problem = problem;
     }
 
@@ -41,4 +42,5 @@
       DataAnalysisProblemData = original.DataAnalysisProblemData;
       Algorithm = original.Algorithm;
+      Problem = original.Problem;
     }
 
@@ -54,4 +56,6 @@
     public IAlgorithm Algorithm { get; private set; }
 
+    public IProblem Problem { get; private set; }
+
     public override IDeepCloneable Clone(Cloner cloner) {
       return new PreprocessingContext(this, cloner);
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IPreprocessingContext.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IPreprocessingContext.cs	(revision 10306)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IPreprocessingContext.cs	(revision 10307)
@@ -23,4 +23,5 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Problems.DataAnalysis;
+
 namespace HeuristicLab.DataPreprocessing {
   public interface IPreprocessingContext : IItem {
@@ -35,4 +36,6 @@
 
     IAlgorithm Algorithm { get; }
+
+    IProblem Problem { get; }
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.cs	(revision 10306)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.cs	(revision 10307)
@@ -105,5 +105,16 @@
 
     private void exportProblemButton_Click(object sender, EventArgs e) {
-      // TODO
+      var saveFileDialog = new SaveFileDialog {
+        Title = "Save Item",
+        DefaultExt = "hl",
+        Filter = "Uncompressed HeuristicLab Files|*.hl|HeuristicLab Files|*.hl|All Files|*.*",
+        FilterIndex = 2
+      };
+
+      var content = Content.Problem as IStorableContent;
+      if (saveFileDialog.ShowDialog() == DialogResult.OK) {
+        bool compressed = saveFileDialog.FilterIndex != 1;
+        ContentManager.Save(content, saveFileDialog.FileName, compressed);
+      }
     }
 
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.designer.cs	(revision 10306)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.designer.cs	(revision 10307)
@@ -123,9 +123,9 @@
     #endregion
 
-    private System.Windows.Forms.SplitContainer splitContainer1;
     private System.Windows.Forms.ListView contentListView;
     private System.Windows.Forms.Button exportProblemButton;
     private System.Windows.Forms.Button applyInNewTabButton;
     private MainForm.WindowsForms.ViewHost viewHost;
+    private System.Windows.Forms.SplitContainer splitContainer1;
 
   }
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Interfaces/IDataPreprocessorStarter.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Interfaces/IDataPreprocessorStarter.cs	(revision 10306)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Interfaces/IDataPreprocessorStarter.cs	(revision 10307)
@@ -20,5 +20,4 @@
 #endregion
 
-
 using HeuristicLab.MainForm.WindowsForms;
 
