Index: /branches/DataAnalysisService/DataAnalysisService.sln
===================================================================
--- /branches/DataAnalysisService/DataAnalysisService.sln	(revision 7807)
+++ /branches/DataAnalysisService/DataAnalysisService.sln	(revision 7808)
@@ -3,4 +3,6 @@
 # Visual Studio 2010
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard", "HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard\3.3\HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.csproj", "{77169FE1-C48A-49AE-A0DD-67921D7835AB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard", "HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard\3.3\HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard.csproj", "{2DCCE95D-3266-4256-966A-64054BEA34F1}"
 EndProject
 Global
@@ -14,4 +16,8 @@
 		{77169FE1-C48A-49AE-A0DD-67921D7835AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{77169FE1-C48A-49AE-A0DD-67921D7835AB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2DCCE95D-3266-4256-966A-64054BEA34F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2DCCE95D-3266-4256-966A-64054BEA34F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2DCCE95D-3266-4256-966A-64054BEA34F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2DCCE95D-3266-4256-966A-64054BEA34F1}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/DataAnalysisExperimentWizard.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/DataAnalysisExperimentWizard.cs	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/DataAnalysisExperimentWizard.cs	(revision 7808)
@@ -0,0 +1,16 @@
+﻿
+using HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard;
+namespace HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard {
+  public class DataAnalysisExperimentWizard {
+    private WizardBase wizard;
+
+    public DataAnalysisExperimentWizard() {
+      wizard = new WizardBase();
+      wizard.WizardPages.Add(new ProblemDataPage());
+    }
+
+    public void Show() {
+      wizard.Show();
+    }
+  }
+}
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/ExperimentWizardMenuItem.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/ExperimentWizardMenuItem.cs	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/ExperimentWizardMenuItem.cs	(revision 7808)
@@ -0,0 +1,23 @@
+﻿
+using System.Collections.Generic;
+using System.Windows.Forms;
+using HeuristicLab.Optimizer;
+namespace HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard {
+  public class ExperimentWizardMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItem, IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "&Experiment Wizard"; }
+    }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "&Services", "&Data Analysis Service" }; }
+    }
+    public override void Execute() {
+      new DataAnalysisExperimentWizard().Show();
+    }
+    public override int Position {
+      get { return 10000; }
+    }
+    public override Keys ShortCutKeys {
+      get { return Keys.Control | Keys.D; }
+    }
+  }
+}
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard.csproj
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard.csproj	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard.csproj	(revision 7808)
@@ -0,0 +1,150 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{2DCCE95D-3266-4256-966A-64054BEA34F1}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard</RootNamespace>
+    <AssemblyName>HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard-3.3</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HeuristicLab.Algorithms.DataAnalysis.Views-3.4">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Algorithms.DataAnalysis.Views-3.4.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Collections-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Common.Resources-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Core.Views-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Core.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Data.Views-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Data.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimization.Views-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Optimization.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Optimizer-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Optimizer-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Parameters-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Parameters.Views-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Parameters.Views-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis-3.4">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis-3.4.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.DataAnalysis.Views-3.4">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis.Views-3.4.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Visualization.ChartControlsExtensions-3.3">
+      <HintPath>..\..\..\trunk\sources\bin\HeuristicLab.Visualization.ChartControlsExtensions-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DataAnalysisExperimentWizard.cs" />
+    <Compile Include="ExperimentWizardMenuItem.cs" />
+    <Compile Include="ProblemDataPage.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ProblemDataPage.Designer.cs">
+      <DependentUpon>ProblemDataPage.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard\3.3\HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.csproj">
+      <Project>{77169FE1-C48A-49AE-A0DD-67921D7835AB}</Project>
+      <Name>HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="ProblemDataPage.resx">
+      <DependentUpon>ProblemDataPage.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd
+</PreBuildEvent>
+  </PropertyGroup>
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/Plugin.cs.frame
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/Plugin.cs.frame	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/Plugin.cs.frame	(revision 7808)
@@ -0,0 +1,51 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard {
+  /// <summary>
+  /// Plugin class for HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard", "3.3.6.$WCREV$")]
+  [PluginFile("HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Algorithms.DataAnalysis.Views", "3.4")]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
+  [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
+  [PluginDependency("HeuristicLab.Core", "3.3")]
+  [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.Data.Views", "3.3")]
+  [PluginDependency("HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Optimizer", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters", "3.3")]
+  [PluginDependency("HeuristicLab.Parameters.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Views", "3.4")]
+  [PluginDependency("HeuristicLab.Visualization.ChartControlsExtensions", "3.3")]
+  public class HeuristicLabExperimentGenerationDataAnalysisExperimentWizardPlugin : PluginBase {
+  }
+}
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/ProblemDataPage.Designer.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/ProblemDataPage.Designer.cs	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/ProblemDataPage.Designer.cs	(revision 7808)
@@ -0,0 +1,70 @@
+﻿namespace HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard {
+  partial class ProblemDataPage {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.wizardBanner1 = new HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.Controls.WizardBanner();
+      this.dataAnalysisProblemView = new HeuristicLab.Problems.DataAnalysis.Views.DataAnalysisProblemView();
+      this.SuspendLayout();
+      // 
+      // wizardBanner1
+      // 
+      this.wizardBanner1.BackColor = System.Drawing.SystemColors.Window;
+      this.wizardBanner1.Dock = System.Windows.Forms.DockStyle.Top;
+      this.wizardBanner1.Location = new System.Drawing.Point(0, 0);
+      this.wizardBanner1.Name = "wizardBanner1";
+      this.wizardBanner1.Size = new System.Drawing.Size(713, 81);
+      this.wizardBanner1.Subtitle = "Please select file ...";
+      this.wizardBanner1.TabIndex = 0;
+      this.wizardBanner1.Title = "Problem Data";
+      // 
+      // dataAnalysisProblemView
+      // 
+      this.dataAnalysisProblemView.Caption = "DataAnalysisProblem View";
+      this.dataAnalysisProblemView.Content = null;
+      this.dataAnalysisProblemView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.dataAnalysisProblemView.Location = new System.Drawing.Point(0, 81);
+      this.dataAnalysisProblemView.Name = "dataAnalysisProblemView";
+      this.dataAnalysisProblemView.ReadOnly = false;
+      this.dataAnalysisProblemView.Size = new System.Drawing.Size(713, 371);
+      this.dataAnalysisProblemView.TabIndex = 1;
+      // 
+      // ProblemDataPage
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.Controls.Add(this.dataAnalysisProblemView);
+      this.Controls.Add(this.wizardBanner1);
+      this.Name = "ProblemDataPage";
+      this.Size = new System.Drawing.Size(713, 452);
+      this.SetActive += new System.ComponentModel.CancelEventHandler(this.ProblemDataPage_SetActive);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private Wizard.Controls.WizardBanner wizardBanner1;
+    private Problems.DataAnalysis.Views.DataAnalysisProblemView dataAnalysisProblemView;
+
+  }
+}
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/ProblemDataPage.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/ProblemDataPage.cs	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/ProblemDataPage.cs	(revision 7808)
@@ -0,0 +1,13 @@
+﻿using System.ComponentModel;
+
+namespace HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard {
+  public partial class ProblemDataPage : HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.WizardPage {
+    public ProblemDataPage() {
+      InitializeComponent();
+    }
+
+    private void ProblemDataPage_SetActive(object sender, CancelEventArgs e) {
+      SetWizardButton(Wizard.WizardButtons.Next);
+    }
+  }
+}
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/Properties/AssemblyInfo.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/Properties/AssemblyInfo.cs	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard/3.3/Properties/AssemblyInfo.cs	(revision 7808)
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("FH-Hagenberg")]
+[assembly: AssemblyProduct("HeuristicLab.ExperimentGeneration.DataAnalysis.ExperimentWizard")]
+[assembly: AssemblyCopyright("Copyright © FH-Hagenberg 2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("35b099ce-eb45-4282-b47f-f1774c3f2182")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Controls/WizardBanner.Designer.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Controls/WizardBanner.Designer.cs	(revision 7807)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Controls/WizardBanner.Designer.cs	(revision 7808)
@@ -35,5 +35,5 @@
       this.etchedLine1.Edge = HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.Controls.EtchEdge.Bottom;
       this.etchedLine1.LightColor = System.Drawing.SystemColors.ControlLight;
-      this.etchedLine1.Location = new System.Drawing.Point(0, 71);
+      this.etchedLine1.Location = new System.Drawing.Point(0, 61);
       this.etchedLine1.Name = "etchedLine1";
       this.etchedLine1.Size = new System.Drawing.Size(541, 20);
@@ -70,5 +70,5 @@
       this.Controls.Add(this.etchedLine1);
       this.Name = "WizardBanner";
-      this.Size = new System.Drawing.Size(541, 91);
+      this.Size = new System.Drawing.Size(541, 81);
       this.ResumeLayout(false);
 
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.csproj
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.csproj	(revision 7807)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.csproj	(revision 7808)
@@ -10,5 +10,5 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard</RootNamespace>
-    <AssemblyName>HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard</AssemblyName>
+    <AssemblyName>HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard-3.3</AssemblyName>
     <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
@@ -62,9 +62,9 @@
     </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Wizard.cs">
+    <Compile Include="WizardBase.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Include="Wizard.Designer.cs">
-      <DependentUpon>Wizard.cs</DependentUpon>
+    <Compile Include="WizardBase.Designer.cs">
+      <DependentUpon>WizardBase.cs</DependentUpon>
     </Compile>
     <Compile Include="WizardPage.cs">
@@ -83,10 +83,11 @@
       <DependentUpon>WizardBanner.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="Wizard.resx">
-      <DependentUpon>Wizard.cs</DependentUpon>
+    <EmbeddedResource Include="WizardBase.resx">
+      <DependentUpon>WizardBase.cs</DependentUpon>
     </EmbeddedResource>
   </ItemGroup>
   <ItemGroup>
     <None Include="HeuristicLab.snk" />
+    <None Include="Plugin.cs.frame" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Plugin.cs.frame
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Plugin.cs.frame	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Plugin.cs.frame	(revision 7808)
@@ -0,0 +1,32 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2012 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 HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard {
+  /// <summary>
+  /// Plugin class for HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard", "3.3.6.$WCREV$")]
+  [PluginFile("HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard-3.3.dll", PluginFileType.Assembly)]
+  public class HeuristicLabExperimentGenerationDataAnalysisWizardPlugin : PluginBase {
+  }
+}
Index: anches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Wizard.Designer.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Wizard.Designer.cs	(revision 7807)
+++ 	(revision )
@@ -1,141 +1,0 @@
-﻿namespace HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard {
-  partial class Wizard {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Wizard));
-      this.pagePanel = new System.Windows.Forms.Panel();
-      this.controlPanel = new System.Windows.Forms.Panel();
-      this.btnNext = new System.Windows.Forms.Button();
-      this.btnBack = new System.Windows.Forms.Button();
-      this.btnCommit = new System.Windows.Forms.Button();
-      this.btnCancel = new System.Windows.Forms.Button();
-      this.etchedLine1 = new HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.Controls.EtchedLine();
-      this.controlPanel.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // pagePanel
-      // 
-      this.pagePanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
-      this.pagePanel.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.pagePanel.Location = new System.Drawing.Point(0, 0);
-      this.pagePanel.Name = "pagePanel";
-      this.pagePanel.Size = new System.Drawing.Size(624, 384);
-      this.pagePanel.TabIndex = 0;
-      // 
-      // controlPanel
-      // 
-      this.controlPanel.Controls.Add(this.btnNext);
-      this.controlPanel.Controls.Add(this.btnBack);
-      this.controlPanel.Controls.Add(this.btnCommit);
-      this.controlPanel.Controls.Add(this.btnCancel);
-      this.controlPanel.Controls.Add(this.etchedLine1);
-      this.controlPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
-      this.controlPanel.Location = new System.Drawing.Point(0, 384);
-      this.controlPanel.Name = "controlPanel";
-      this.controlPanel.Size = new System.Drawing.Size(624, 58);
-      this.controlPanel.TabIndex = 1;
-      // 
-      // btnNext
-      // 
-      this.btnNext.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.btnNext.Location = new System.Drawing.Point(457, 19);
-      this.btnNext.Name = "btnNext";
-      this.btnNext.Size = new System.Drawing.Size(75, 23);
-      this.btnNext.TabIndex = 4;
-      this.btnNext.Text = "Next";
-      this.btnNext.UseVisualStyleBackColor = true;
-      this.btnNext.Click += new System.EventHandler(this.btnNext_Click);
-      // 
-      // btnBack
-      // 
-      this.btnBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.btnBack.Location = new System.Drawing.Point(375, 19);
-      this.btnBack.Name = "btnBack";
-      this.btnBack.Size = new System.Drawing.Size(75, 23);
-      this.btnBack.TabIndex = 3;
-      this.btnBack.Text = "< Back";
-      this.btnBack.UseVisualStyleBackColor = true;
-      this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
-      // 
-      // btnCommit
-      // 
-      this.btnCommit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.btnCommit.Location = new System.Drawing.Point(456, 19);
-      this.btnCommit.Name = "btnCommit";
-      this.btnCommit.Size = new System.Drawing.Size(75, 23);
-      this.btnCommit.TabIndex = 2;
-      this.btnCommit.Text = "Commit";
-      this.btnCommit.UseVisualStyleBackColor = true;
-      this.btnCommit.Click += new System.EventHandler(this.btnCommit_Click);
-      // 
-      // btnCancel
-      // 
-      this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.btnCancel.Location = new System.Drawing.Point(537, 19);
-      this.btnCancel.Name = "btnCancel";
-      this.btnCancel.Size = new System.Drawing.Size(75, 23);
-      this.btnCancel.TabIndex = 1;
-      this.btnCancel.Text = "Cancel";
-      this.btnCancel.UseVisualStyleBackColor = true;
-      this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
-      // 
-      // etchedLine1
-      // 
-      this.etchedLine1.DarkColor = System.Drawing.SystemColors.ControlDark;
-      this.etchedLine1.Dock = System.Windows.Forms.DockStyle.Top;
-      this.etchedLine1.Edge = HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.Controls.EtchEdge.Top;
-      this.etchedLine1.LightColor = System.Drawing.SystemColors.ControlLight;
-      this.etchedLine1.Location = new System.Drawing.Point(0, 0);
-      this.etchedLine1.Name = "etchedLine1";
-      this.etchedLine1.Size = new System.Drawing.Size(624, 19);
-      this.etchedLine1.TabIndex = 0;
-      // 
-      // Wizard
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.ClientSize = new System.Drawing.Size(624, 442);
-      this.Controls.Add(this.pagePanel);
-      this.Controls.Add(this.controlPanel);
-      this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-      this.Name = "Wizard";
-      this.Text = "Wizard";
-      this.Load += new System.EventHandler(this.Wizard_Load);
-      this.controlPanel.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Panel pagePanel;
-    private System.Windows.Forms.Panel controlPanel;
-    private Controls.EtchedLine etchedLine1;
-    private System.Windows.Forms.Button btnBack;
-    private System.Windows.Forms.Button btnCommit;
-    private System.Windows.Forms.Button btnCancel;
-    private System.Windows.Forms.Button btnNext;
-  }
-}
Index: anches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Wizard.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/Wizard.cs	(revision 7807)
+++ 	(revision )
@@ -1,181 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Windows.Forms;
-
-namespace HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard {
-  public enum WizardButtons {
-    None,
-    Back,
-    Next,
-    Commit
-  }
-  public partial class Wizard : Form {
-    private IList<WizardPage> wizardPages;
-    public IList<WizardPage> WizardPages {
-      get { return wizardPages; }
-    }
-
-    private WizardPage activePage;
-    public WizardPage ActivePage {
-      get { return activePage; }
-    }
-
-    public Wizard() {
-      InitializeComponent();
-      wizardPages = new List<WizardPage>();
-    }
-
-    public void SetActivePage(int pageIndex) {
-      if (pageIndex < 0 || pageIndex >= wizardPages.Count) {
-        throw new ArgumentOutOfRangeException("pageIndex");
-      }
-      SetActivePage(wizardPages[pageIndex]);
-    }
-
-    public void SetActivePage(string pageName) {
-      if (string.IsNullOrEmpty(pageName)) {
-        throw new ArgumentException("Parameter must not be null or empty", "pageName");
-      }
-      WizardPage newPage = WizardPages.Single(p => p.Name == pageName);
-      if (newPage == null) {
-        throw new ArgumentNullException(string.Format("Can't find page with name {0}", pageName));
-      } else {
-        SetActivePage(newPage);
-      }
-
-    }
-
-    public void SetActivePage(WizardPageEventArgs wpea) {
-      if (!wpea.Cancel) {
-        SetActivePage(wpea.NewPage);
-      }
-    }
-
-    public void SetActivePage(WizardPage page) {
-      WizardPage oldActivePage = activePage;
-      if (!pagePanel.Controls.Contains(page)) {
-        pagePanel.Controls.Add(page);
-      }
-      page.Visible = true;
-      activePage = page;
-
-      CancelEventArgs e = new CancelEventArgs();
-      activePage.OnSetActive(e);
-      if (e.Cancel) {
-        activePage.Visible = false;
-        activePage = oldActivePage;
-      }
-
-      foreach (WizardPage wp in WizardPages) {
-        if (wp != activePage) {
-          wp.Visible = false;
-        }
-      }
-    }
-
-    public void SetWizardButton(WizardButtons button) {
-      if (button == WizardButtons.Back) {
-        btnBack.Enabled = true;
-      } else if (button == WizardButtons.Next) {
-        btnCommit.Visible = false;
-        btnCommit.Enabled = false;
-        btnNext.Visible = true;
-        btnNext.Enabled = true;
-        AcceptButton = btnNext;
-      } else if (button == WizardButtons.Commit) {
-        btnCommit.Visible = true;
-        btnCommit.Enabled = true;
-        btnNext.Visible = false;
-        btnNext.Enabled = false;
-        AcceptButton = btnCommit;
-      }
-    }
-
-    public void SetButtonText(WizardButtons button, string buttonText) {
-      if (button == WizardButtons.Commit) {
-        btnCommit.Text = buttonText;
-      }
-    }
-
-    protected virtual void OnQueryCancel(CancelEventArgs e) {
-      activePage.OnQueryCancel(e);
-    }
-
-    private void SetWizardSizeToFitAllPages() {
-      System.Drawing.Size maxPageSize = new System.Drawing.Size(controlPanel.Width, 0);
-      foreach (WizardPage page in WizardPages) {
-        if (page.Width > maxPageSize.Width) {
-          maxPageSize.Width = page.Width;
-        }
-        if (page.Height > maxPageSize.Height) {
-          maxPageSize.Height = page.Height;
-        }
-      }
-      foreach (WizardPage page in WizardPages) {
-        page.Size = maxPageSize;
-      }
-      System.Drawing.Size newSize = maxPageSize + (Size - pagePanel.Size);
-      Size = newSize;
-    }
-
-    private WizardPageEventArgs BuildChangePageEventArgs(int delta) {
-      int activePageIndex = WizardPages.IndexOf(ActivePage);
-      int nextPageIndex = activePageIndex + delta;
-
-      if (nextPageIndex < 0 || nextPageIndex >= WizardPages.Count)
-        nextPageIndex = activePageIndex;
-
-      WizardPage nextPage = WizardPages[nextPageIndex];
-      WizardPageEventArgs wpea = new WizardPageEventArgs();
-      wpea.NewPage = nextPage.Name;
-      wpea.Cancel = false;
-
-      return wpea;
-    }
-
-    private void btnNext_Click(object sender, EventArgs e) {
-      WizardPageEventArgs wpea = BuildChangePageEventArgs(1);
-      ActivePage.OnWizardNext(wpea);
-      SetActivePage(wpea);
-    }
-
-    private void btnBack_Click(object sender, EventArgs e) {
-      WizardPageEventArgs wpea = BuildChangePageEventArgs(-1);
-      ActivePage.OnWizardBack(wpea);
-      SetActivePage(wpea);
-    }
-
-    private void btnCommit_Click(object sender, EventArgs e) {
-      CancelEventArgs cea = new CancelEventArgs();
-      ActivePage.OnWizardCommit(cea);
-      if (!cea.Cancel) {
-        DialogResult = DialogResult.OK;
-        Close();
-      }
-    }
-
-    private void btnCancel_Click(object sender, EventArgs e) {
-      DialogResult = DialogResult.Cancel;
-      Close();
-    }
-
-    private void Wizard_Load(object sender, EventArgs e) {
-      if (WizardPages.Count > 0) {
-        SetWizardSizeToFitAllPages();
-        SetActivePage(0);
-      } else {
-        SetWizardButton(WizardButtons.None);
-      }
-    }
-
-    private void Wizard_Closing(object sender, CancelEventArgs e) {
-      if (!btnCancel.Enabled) {
-        e.Cancel = true;
-      } else if (btnCommit.Enabled) {
-        OnQueryCancel(e);
-      }
-    }
-  }
-}
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/WizardBase.Designer.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/WizardBase.Designer.cs	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/WizardBase.Designer.cs	(revision 7808)
@@ -0,0 +1,141 @@
+﻿namespace HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard {
+  partial class WizardBase {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WizardBase));
+      this.pagePanel = new System.Windows.Forms.Panel();
+      this.controlPanel = new System.Windows.Forms.Panel();
+      this.btnNext = new System.Windows.Forms.Button();
+      this.btnBack = new System.Windows.Forms.Button();
+      this.btnCommit = new System.Windows.Forms.Button();
+      this.btnCancel = new System.Windows.Forms.Button();
+      this.etchedLine1 = new HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.Controls.EtchedLine();
+      this.controlPanel.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // pagePanel
+      // 
+      this.pagePanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
+      this.pagePanel.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.pagePanel.Location = new System.Drawing.Point(0, 0);
+      this.pagePanel.Name = "pagePanel";
+      this.pagePanel.Size = new System.Drawing.Size(624, 384);
+      this.pagePanel.TabIndex = 0;
+      // 
+      // controlPanel
+      // 
+      this.controlPanel.Controls.Add(this.btnNext);
+      this.controlPanel.Controls.Add(this.btnBack);
+      this.controlPanel.Controls.Add(this.btnCommit);
+      this.controlPanel.Controls.Add(this.btnCancel);
+      this.controlPanel.Controls.Add(this.etchedLine1);
+      this.controlPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
+      this.controlPanel.Location = new System.Drawing.Point(0, 384);
+      this.controlPanel.Name = "controlPanel";
+      this.controlPanel.Size = new System.Drawing.Size(624, 58);
+      this.controlPanel.TabIndex = 1;
+      // 
+      // btnNext
+      // 
+      this.btnNext.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.btnNext.Location = new System.Drawing.Point(457, 19);
+      this.btnNext.Name = "btnNext";
+      this.btnNext.Size = new System.Drawing.Size(75, 23);
+      this.btnNext.TabIndex = 4;
+      this.btnNext.Text = "Next";
+      this.btnNext.UseVisualStyleBackColor = true;
+      this.btnNext.Click += new System.EventHandler(this.btnNext_Click);
+      // 
+      // btnBack
+      // 
+      this.btnBack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.btnBack.Location = new System.Drawing.Point(375, 19);
+      this.btnBack.Name = "btnBack";
+      this.btnBack.Size = new System.Drawing.Size(75, 23);
+      this.btnBack.TabIndex = 3;
+      this.btnBack.Text = "< Back";
+      this.btnBack.UseVisualStyleBackColor = true;
+      this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
+      // 
+      // btnCommit
+      // 
+      this.btnCommit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.btnCommit.Location = new System.Drawing.Point(456, 19);
+      this.btnCommit.Name = "btnCommit";
+      this.btnCommit.Size = new System.Drawing.Size(75, 23);
+      this.btnCommit.TabIndex = 2;
+      this.btnCommit.Text = "Commit";
+      this.btnCommit.UseVisualStyleBackColor = true;
+      this.btnCommit.Click += new System.EventHandler(this.btnCommit_Click);
+      // 
+      // btnCancel
+      // 
+      this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+      this.btnCancel.Location = new System.Drawing.Point(537, 19);
+      this.btnCancel.Name = "btnCancel";
+      this.btnCancel.Size = new System.Drawing.Size(75, 23);
+      this.btnCancel.TabIndex = 1;
+      this.btnCancel.Text = "Cancel";
+      this.btnCancel.UseVisualStyleBackColor = true;
+      this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
+      // 
+      // etchedLine1
+      // 
+      this.etchedLine1.DarkColor = System.Drawing.SystemColors.ControlDark;
+      this.etchedLine1.Dock = System.Windows.Forms.DockStyle.Top;
+      this.etchedLine1.Edge = HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard.Controls.EtchEdge.Top;
+      this.etchedLine1.LightColor = System.Drawing.SystemColors.ControlLight;
+      this.etchedLine1.Location = new System.Drawing.Point(0, 0);
+      this.etchedLine1.Name = "etchedLine1";
+      this.etchedLine1.Size = new System.Drawing.Size(624, 19);
+      this.etchedLine1.TabIndex = 0;
+      // 
+      // Wizard
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(624, 442);
+      this.Controls.Add(this.pagePanel);
+      this.Controls.Add(this.controlPanel);
+      this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+      this.Name = "Wizard";
+      this.Text = "Wizard";
+      this.Load += new System.EventHandler(this.Wizard_Load);
+      this.controlPanel.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Panel pagePanel;
+    private System.Windows.Forms.Panel controlPanel;
+    private Controls.EtchedLine etchedLine1;
+    private System.Windows.Forms.Button btnBack;
+    private System.Windows.Forms.Button btnCommit;
+    private System.Windows.Forms.Button btnCancel;
+    private System.Windows.Forms.Button btnNext;
+  }
+}
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/WizardBase.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/WizardBase.cs	(revision 7808)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/WizardBase.cs	(revision 7808)
@@ -0,0 +1,181 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard {
+  public enum WizardButtons {
+    None,
+    Back,
+    Next,
+    Commit
+  }
+  public partial class WizardBase : Form {
+    private IList<WizardPage> wizardPages;
+    public IList<WizardPage> WizardPages {
+      get { return wizardPages; }
+    }
+
+    private WizardPage activePage;
+    public WizardPage ActivePage {
+      get { return activePage; }
+    }
+
+    public WizardBase() {
+      InitializeComponent();
+      wizardPages = new List<WizardPage>();
+    }
+
+    public void SetActivePage(int pageIndex) {
+      if (pageIndex < 0 || pageIndex >= wizardPages.Count) {
+        throw new ArgumentOutOfRangeException("pageIndex");
+      }
+      SetActivePage(wizardPages[pageIndex]);
+    }
+
+    public void SetActivePage(string pageName) {
+      if (string.IsNullOrEmpty(pageName)) {
+        throw new ArgumentException("Parameter must not be null or empty", "pageName");
+      }
+      WizardPage newPage = WizardPages.Single(p => p.Name == pageName);
+      if (newPage == null) {
+        throw new ArgumentNullException(string.Format("Can't find page with name {0}", pageName));
+      } else {
+        SetActivePage(newPage);
+      }
+
+    }
+
+    public void SetActivePage(WizardPageEventArgs wpea) {
+      if (!wpea.Cancel) {
+        SetActivePage(wpea.NewPage);
+      }
+    }
+
+    public void SetActivePage(WizardPage page) {
+      WizardPage oldActivePage = activePage;
+      if (!pagePanel.Controls.Contains(page)) {
+        pagePanel.Controls.Add(page);
+      }
+      page.Visible = true;
+      activePage = page;
+
+      CancelEventArgs e = new CancelEventArgs();
+      activePage.OnSetActive(e);
+      if (e.Cancel) {
+        activePage.Visible = false;
+        activePage = oldActivePage;
+      }
+
+      foreach (WizardPage wp in WizardPages) {
+        if (wp != activePage) {
+          wp.Visible = false;
+        }
+      }
+    }
+
+    public void SetWizardButton(WizardButtons button) {
+      if (button == WizardButtons.Back) {
+        btnBack.Enabled = true;
+      } else if (button == WizardButtons.Next) {
+        btnCommit.Visible = false;
+        btnCommit.Enabled = false;
+        btnNext.Visible = true;
+        btnNext.Enabled = true;
+        AcceptButton = btnNext;
+      } else if (button == WizardButtons.Commit) {
+        btnCommit.Visible = true;
+        btnCommit.Enabled = true;
+        btnNext.Visible = false;
+        btnNext.Enabled = false;
+        AcceptButton = btnCommit;
+      }
+    }
+
+    public void SetButtonText(WizardButtons button, string buttonText) {
+      if (button == WizardButtons.Commit) {
+        btnCommit.Text = buttonText;
+      }
+    }
+
+    protected virtual void OnQueryCancel(CancelEventArgs e) {
+      activePage.OnQueryCancel(e);
+    }
+
+    private void SetWizardSizeToFitAllPages() {
+      System.Drawing.Size maxPageSize = new System.Drawing.Size(controlPanel.Width, 0);
+      foreach (WizardPage page in WizardPages) {
+        if (page.Width > maxPageSize.Width) {
+          maxPageSize.Width = page.Width;
+        }
+        if (page.Height > maxPageSize.Height) {
+          maxPageSize.Height = page.Height;
+        }
+      }
+      foreach (WizardPage page in WizardPages) {
+        page.Size = maxPageSize;
+      }
+      System.Drawing.Size newSize = maxPageSize + (Size - pagePanel.Size);
+      Size = newSize;
+    }
+
+    private WizardPageEventArgs BuildChangePageEventArgs(int delta) {
+      int activePageIndex = WizardPages.IndexOf(ActivePage);
+      int nextPageIndex = activePageIndex + delta;
+
+      if (nextPageIndex < 0 || nextPageIndex >= WizardPages.Count)
+        nextPageIndex = activePageIndex;
+
+      WizardPage nextPage = WizardPages[nextPageIndex];
+      WizardPageEventArgs wpea = new WizardPageEventArgs();
+      wpea.NewPage = nextPage.Name;
+      wpea.Cancel = false;
+
+      return wpea;
+    }
+
+    private void btnNext_Click(object sender, EventArgs e) {
+      WizardPageEventArgs wpea = BuildChangePageEventArgs(1);
+      ActivePage.OnWizardNext(wpea);
+      SetActivePage(wpea);
+    }
+
+    private void btnBack_Click(object sender, EventArgs e) {
+      WizardPageEventArgs wpea = BuildChangePageEventArgs(-1);
+      ActivePage.OnWizardBack(wpea);
+      SetActivePage(wpea);
+    }
+
+    private void btnCommit_Click(object sender, EventArgs e) {
+      CancelEventArgs cea = new CancelEventArgs();
+      ActivePage.OnWizardCommit(cea);
+      if (!cea.Cancel) {
+        DialogResult = DialogResult.OK;
+        Close();
+      }
+    }
+
+    private void btnCancel_Click(object sender, EventArgs e) {
+      DialogResult = DialogResult.Cancel;
+      Close();
+    }
+
+    private void Wizard_Load(object sender, EventArgs e) {
+      if (WizardPages.Count > 0) {
+        SetWizardSizeToFitAllPages();
+        SetActivePage(0);
+      } else {
+        SetWizardButton(WizardButtons.None);
+      }
+    }
+
+    private void Wizard_Closing(object sender, CancelEventArgs e) {
+      if (!btnCancel.Enabled) {
+        e.Cancel = true;
+      } else if (btnCommit.Enabled) {
+        OnQueryCancel(e);
+      }
+    }
+  }
+}
Index: /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/WizardPage.cs
===================================================================
--- /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/WizardPage.cs	(revision 7807)
+++ /branches/DataAnalysisService/HeuristicLab.ExperimentGeneration.DataAnalysis.Wizard/3.3/WizardPage.cs	(revision 7808)
@@ -8,6 +8,6 @@
     }
 
-    public Wizard ParentWizard {
-      get { return (Wizard)ParentForm; }
+    public WizardBase ParentWizard {
+      get { return (WizardBase)ParentForm; }
     }
 
