Index: /trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- /trunk/sources/HeuristicLab 3.3.sln	(revision 2713)
+++ /trunk/sources/HeuristicLab 3.3.sln	(revision 2714)
@@ -64,4 +64,5 @@
 		{3BD61258-31DA-4B09-89C0-4F71FEF5F05A} = {3BD61258-31DA-4B09-89C0-4F71FEF5F05A}
 		{C664305E-497C-4533-A140-967DEDB05C19} = {C664305E-497C-4533-A140-967DEDB05C19}
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7} = {56F9106A-079F-4C61-92F6-86A84C2D84B7}
 		{DC3D7072-7999-4719-B65D-3997744D5DC1} = {DC3D7072-7999-4719-B65D-3997744D5DC1}
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71} = {BF7D9494-A586-457B-8DF9-ED599F9E6A71}
@@ -71,4 +72,5 @@
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC} = {EE2034D9-6E27-48A1-B855-42D45F69A4FC}
 		{1B3063DB-D71C-4A6A-A359-883E8F53A140} = {1B3063DB-D71C-4A6A-A359-883E8F53A140}
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295} = {AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}
 		{A9E282EA-180F-4233-B809-AEDF0787545C} = {A9E282EA-180F-4233-B809-AEDF0787545C}
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE} = {23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}
@@ -112,4 +114,8 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.MainForm.Test-3.2", "HeuristicLab.MainForm.Test\3.2\HeuristicLab.MainForm.Test-3.2.csproj", "{569E430B-B4CE-4B94-A44E-6246B6E4E3BC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Parameters-3.3", "HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj", "{56F9106A-079F-4C61-92F6-86A84C2D84B7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Parameters.Views-3.3", "HeuristicLab.Parameters.Views\3.3\HeuristicLab.Parameters.Views-3.3.csproj", "{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}"
 EndProject
 Global
@@ -525,4 +531,20 @@
 		{569E430B-B4CE-4B94-A44E-6246B6E4E3BC}.Release|x86.ActiveCfg = Release|x86
 		{569E430B-B4CE-4B94-A44E-6246B6E4E3BC}.Release|x86.Build.0 = Release|x86
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|x64.ActiveCfg = Release|Any CPU
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|x86.ActiveCfg = Release|Any CPU
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|x64.ActiveCfg = Release|Any CPU
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|x86.ActiveCfg = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
Index: /trunk/sources/HeuristicLab 3.3/Files.txt
===================================================================
--- /trunk/sources/HeuristicLab 3.3/Files.txt	(revision 2713)
+++ /trunk/sources/HeuristicLab 3.3/Files.txt	(revision 2714)
@@ -22,4 +22,6 @@
 HeuristicLab.Operators.Programmable\3.3:HeuristicLab.Operators.Programmable-3.3.dll 
 HeuristicLab.Optimizer\3.3:HeuristicLab.Optimizer-3.3.dll 
+HeuristicLab.Parameters\3.3:HeuristicLab.Parameters-3.3.dll 
+HeuristicLab.Parameters.Views\3.3:HeuristicLab.Parameters.Views-3.3.dll 
 HeuristicLab.Permutation\3.3:HeuristicLab.Permutation-3.3.dll 
 HeuristicLab.Persistence\3.3:HeuristicLab.Persistence-3.3.dll 
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2713)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2714)
@@ -65,10 +65,4 @@
       <DependentUpon>EngineView.cs</DependentUpon>
     </Compile>
-    <Compile Include="ItemParameterView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ItemParameterView.Designer.cs">
-      <DependentUpon>ItemParameterView.cs</DependentUpon>
-    </Compile>
     <Compile Include="ItemView.cs">
       <SubType>UserControl</SubType>
@@ -160,10 +154,4 @@
     <Compile Include="ItemListView.Designer.cs">
       <DependentUpon>ItemListView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ParameterView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ParameterView.Designer.cs">
-      <DependentUpon>ParameterView.cs</DependentUpon>
     </Compile>
     <Compile Include="ScopeView.cs">
Index: unk/sources/HeuristicLab.Core.Views/3.3/ItemParameterView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemParameterView.Designer.cs	(revision 2713)
+++ 	(revision )
@@ -1,209 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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
-
-namespace HeuristicLab.Core.Views {
-  partial class ItemParameterView {
-    /// <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) {
-        if (typeSelectorDialog != null) typeSelectorDialog.Dispose();
-        if (components != null) components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component 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.components = new System.ComponentModel.Container();
-      this.valueGroupBox = new System.Windows.Forms.GroupBox();
-      this.valuePanel = new System.Windows.Forms.Panel();
-      this.viewHost = new HeuristicLab.Core.Views.ViewHost();
-      this.clearValueButton = new System.Windows.Forms.Button();
-      this.setValueButton = new System.Windows.Forms.Button();
-      this.actualNameTextBox = new System.Windows.Forms.TextBox();
-      this.actualNameLabel = new System.Windows.Forms.Label();
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.valueGroupBox.SuspendLayout();
-      this.valuePanel.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // dataTypeLabel
-      // 
-      this.dataTypeLabel.Location = new System.Drawing.Point(3, 123);
-      this.dataTypeLabel.TabIndex = 6;
-      // 
-      // dataTypeTextBox
-      // 
-      this.dataTypeTextBox.Location = new System.Drawing.Point(80, 120);
-      this.dataTypeTextBox.Size = new System.Drawing.Size(306, 20);
-      this.dataTypeTextBox.TabIndex = 7;
-      // 
-      // nameTextBox
-      // 
-      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Location = new System.Drawing.Point(80, 0);
-      this.nameTextBox.Size = new System.Drawing.Size(306, 20);
-      // 
-      // descriptionLabel
-      // 
-      this.descriptionLabel.Location = new System.Drawing.Point(3, 55);
-      this.descriptionLabel.TabIndex = 4;
-      // 
-      // descriptionTextBox
-      // 
-      this.descriptionTextBox.Location = new System.Drawing.Point(80, 52);
-      this.descriptionTextBox.Size = new System.Drawing.Size(306, 62);
-      this.descriptionTextBox.TabIndex = 5;
-      // 
-      // valueGroupBox
-      // 
-      this.valueGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueGroupBox.Controls.Add(this.valuePanel);
-      this.valueGroupBox.Controls.Add(this.clearValueButton);
-      this.valueGroupBox.Controls.Add(this.setValueButton);
-      this.valueGroupBox.Location = new System.Drawing.Point(0, 146);
-      this.valueGroupBox.Name = "valueGroupBox";
-      this.valueGroupBox.Size = new System.Drawing.Size(386, 169);
-      this.valueGroupBox.TabIndex = 10;
-      this.valueGroupBox.TabStop = false;
-      this.valueGroupBox.Text = "&Value:";
-      // 
-      // valuePanel
-      // 
-      this.valuePanel.AllowDrop = true;
-      this.valuePanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.valuePanel.Controls.Add(this.viewHost);
-      this.valuePanel.Location = new System.Drawing.Point(6, 48);
-      this.valuePanel.Name = "valuePanel";
-      this.valuePanel.Size = new System.Drawing.Size(374, 115);
-      this.valuePanel.TabIndex = 0;
-      this.valuePanel.DragOver += new System.Windows.Forms.DragEventHandler(this.valuePanel_DragEnterOver);
-      this.valuePanel.DragDrop += new System.Windows.Forms.DragEventHandler(this.valuePanel_DragDrop);
-      this.valuePanel.DragEnter += new System.Windows.Forms.DragEventHandler(this.valuePanel_DragEnterOver);
-      // 
-      // viewHost
-      // 
-      this.viewHost.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.viewHost.Location = new System.Drawing.Point(0, 0);
-      this.viewHost.Name = "viewHost";
-      this.viewHost.Content = null;
-      this.viewHost.Size = new System.Drawing.Size(374, 115);
-      this.viewHost.TabIndex = 0;
-      // 
-      // clearValueButton
-      // 
-      this.clearValueButton.Enabled = false;
-      this.clearValueButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove;
-      this.clearValueButton.Location = new System.Drawing.Point(35, 19);
-      this.clearValueButton.Name = "clearValueButton";
-      this.clearValueButton.Size = new System.Drawing.Size(23, 23);
-      this.clearValueButton.TabIndex = 9;
-      this.toolTip.SetToolTip(this.clearValueButton, "Clear Value");
-      this.clearValueButton.UseVisualStyleBackColor = true;
-      this.clearValueButton.Click += new System.EventHandler(this.clearValueButton_Click);
-      // 
-      // setValueButton
-      // 
-      this.setValueButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Add;
-      this.setValueButton.Location = new System.Drawing.Point(6, 19);
-      this.setValueButton.Name = "setValueButton";
-      this.setValueButton.Size = new System.Drawing.Size(23, 23);
-      this.setValueButton.TabIndex = 8;
-      this.toolTip.SetToolTip(this.setValueButton, "Set Value");
-      this.setValueButton.UseVisualStyleBackColor = true;
-      this.setValueButton.Click += new System.EventHandler(this.setValueButton_Click);
-      // 
-      // actualNameTextBox
-      // 
-      this.actualNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.actualNameTextBox.Location = new System.Drawing.Point(80, 26);
-      this.actualNameTextBox.Name = "actualNameTextBox";
-      this.actualNameTextBox.Size = new System.Drawing.Size(306, 20);
-      this.actualNameTextBox.TabIndex = 3;
-      this.actualNameTextBox.Validated += new System.EventHandler(this.actualNameTextBox_Validated);
-      // 
-      // actualNameLabel
-      // 
-      this.actualNameLabel.AutoSize = true;
-      this.actualNameLabel.Location = new System.Drawing.Point(3, 29);
-      this.actualNameLabel.Name = "actualNameLabel";
-      this.actualNameLabel.Size = new System.Drawing.Size(71, 13);
-      this.actualNameLabel.TabIndex = 2;
-      this.actualNameLabel.Text = "&Actual Name:";
-      // 
-      // ItemParameterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.valueGroupBox);
-      this.Controls.Add(this.actualNameTextBox);
-      this.Controls.Add(this.actualNameLabel);
-      this.Name = "ItemParameterView";
-      this.Size = new System.Drawing.Size(386, 315);
-      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
-      this.Controls.SetChildIndex(this.descriptionLabel, 0);
-      this.Controls.SetChildIndex(this.dataTypeTextBox, 0);
-      this.Controls.SetChildIndex(this.actualNameLabel, 0);
-      this.Controls.SetChildIndex(this.dataTypeLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.actualNameTextBox, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.valueGroupBox, 0);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.valueGroupBox.ResumeLayout(false);
-      this.valuePanel.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.GroupBox valueGroupBox;
-    protected System.Windows.Forms.TextBox actualNameTextBox;
-    protected System.Windows.Forms.Label actualNameLabel;
-    protected System.Windows.Forms.Panel valuePanel;
-    protected ViewHost viewHost;
-    protected System.Windows.Forms.Button setValueButton;
-    protected System.Windows.Forms.ToolTip toolTip;
-    protected System.Windows.Forms.Button clearValueButton;
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/ItemParameterView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemParameterView.cs	(revision 2713)
+++ 	(revision )
@@ -1,158 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// The visual representation of a <see cref="Parameter"/>.
-  /// </summary>
-  [Content(typeof(ItemParameter), true)]
-  public partial class ItemParameterView : ParameterView {
-    protected TypeSelectorDialog typeSelectorDialog;
-
-    /// <summary>
-    /// Gets or sets the variable to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
-    /// No own data storage present.</remarks>
-    public new ItemParameter Content {
-      get { return (ItemParameter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="VariableView"/> with caption "Variable".
-    /// </summary>
-    public ItemParameterView() {
-      InitializeComponent();
-      Caption = "Parameter";
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="VariableView"/> with the given <paramref name="variable"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="VariableView()"/>.</remarks>
-    /// <param name="variable">The variable to represent visually.</param>
-    public ItemParameterView(ItemParameter parameter)
-      : this() {
-      Content = parameter;
-    }
-
-    /// <summary>
-    /// Removes the eventhandlers from the underlying <see cref="IVariable"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
-    protected override void DeregisterContentEvents() {
-      Content.ActualNameChanged -= new EventHandler(Content_ActualNameChanged);
-      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
-      base.DeregisterContentEvents();
-    }
-
-    /// <summary>
-    /// Adds eventhandlers to the underlying <see cref="IVariable"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.ActualNameChanged += new EventHandler(Content_ActualNameChanged);
-      Content.ValueChanged += new EventHandler(Content_ValueChanged);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        Caption = "Parameter";
-        actualNameTextBox.Text = "-";
-        actualNameTextBox.Enabled = false;
-        setValueButton.Enabled = false;
-        clearValueButton.Enabled = false;
-        valueGroupBox.Enabled = false;
-        viewHost.Content = null;
-      } else {
-        Caption = Content.Name + " (" + Content.GetType().Name + ")";
-        actualNameTextBox.Text = Content.ActualName;
-        actualNameTextBox.Enabled = Content.Value == null;
-        setValueButton.Enabled = Content.Value == null;
-        clearValueButton.Enabled = Content.Value != null;
-        valueGroupBox.Enabled = true;
-        viewHost.Content = Content.Value;
-      }
-    }
-
-    protected virtual void Content_ActualNameChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ActualNameChanged), sender, e);
-      else
-        actualNameTextBox.Text = Content.ActualName;
-    }
-    protected virtual void Content_ValueChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ValueChanged), sender, e);
-      else {
-        actualNameTextBox.Enabled = Content.Value == null;
-        setValueButton.Enabled = Content.Value == null;
-        clearValueButton.Enabled = Content.Value != null;
-        viewHost.Content = Content.Value;
-      }
-    }
-
-    protected virtual void actualNameTextBox_Validated(object sender, EventArgs e) {
-      Content.ActualName = actualNameTextBox.Text;
-    }
-    protected virtual void setValueButton_Click(object sender, EventArgs e) {
-      if (typeSelectorDialog == null) {
-        typeSelectorDialog = new TypeSelectorDialog();
-        typeSelectorDialog.Caption = "Select Value Type";
-      }
-      typeSelectorDialog.TypeSelector.Configure(Content.DataType, false, false);
-      if (typeSelectorDialog.ShowDialog(this) == DialogResult.OK)
-        Content.Value = (IItem)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
-    }
-    protected virtual void clearValueButton_Click(object sender, EventArgs e) {
-      Content.Value = null;
-    }
-    protected virtual void valuePanel_DragEnterOver(object sender, DragEventArgs e) {
-      e.Effect = DragDropEffects.None;
-      Type type = e.Data.GetData("Type") as Type;
-      if ((type != null) && (Content.DataType.IsAssignableFrom(type))) {
-        if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy;  // CTRL key
-        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
-        else if ((e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) e.Effect = DragDropEffects.Link;
-        else if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) e.Effect = DragDropEffects.Copy;
-        else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) e.Effect = DragDropEffects.Move;
-      }
-    }
-    protected virtual void valuePanel_DragDrop(object sender, DragEventArgs e) {
-      if (e.Effect != DragDropEffects.None) {
-        IItem item = e.Data.GetData("Value") as IItem;
-        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) item = (IItem)item.Clone();
-        Content.Value = item;
-      }
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/ParameterView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ParameterView.Designer.cs	(revision 2713)
+++ 	(revision )
@@ -1,119 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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
-
-namespace HeuristicLab.Core.Views {
-  partial class ParameterView {
-    /// <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) {
-        if (components != null) components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component 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.dataTypeLabel = new System.Windows.Forms.Label();
-      this.dataTypeTextBox = new System.Windows.Forms.TextBox();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // nameTextBox
-      // 
-      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Location = new System.Drawing.Point(72, 0);
-      this.nameTextBox.Size = new System.Drawing.Size(321, 20);
-      // 
-      // nameLabel
-      // 
-      this.nameLabel.Location = new System.Drawing.Point(3, 3);
-      // 
-      // descriptionLabel
-      // 
-      this.descriptionLabel.Location = new System.Drawing.Point(3, 29);
-      // 
-      // descriptionTextBox
-      // 
-      this.descriptionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.descriptionTextBox.Location = new System.Drawing.Point(72, 26);
-      this.descriptionTextBox.Size = new System.Drawing.Size(321, 62);
-      // 
-      // dataTypeLabel
-      // 
-      this.dataTypeLabel.AutoSize = true;
-      this.dataTypeLabel.Location = new System.Drawing.Point(3, 97);
-      this.dataTypeLabel.Name = "dataTypeLabel";
-      this.dataTypeLabel.Size = new System.Drawing.Size(60, 13);
-      this.dataTypeLabel.TabIndex = 4;
-      this.dataTypeLabel.Text = "Data &Type:";
-      // 
-      // dataTypeTextBox
-      // 
-      this.dataTypeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataTypeTextBox.Location = new System.Drawing.Point(72, 94);
-      this.dataTypeTextBox.Name = "dataTypeTextBox";
-      this.dataTypeTextBox.ReadOnly = true;
-      this.dataTypeTextBox.Size = new System.Drawing.Size(321, 20);
-      this.dataTypeTextBox.TabIndex = 5;
-      // 
-      // ParameterView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dataTypeLabel);
-      this.Controls.Add(this.dataTypeTextBox);
-      this.Name = "ParameterView";
-      this.Size = new System.Drawing.Size(393, 124);
-      this.Controls.SetChildIndex(this.dataTypeTextBox, 0);
-      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
-      this.Controls.SetChildIndex(this.descriptionLabel, 0);
-      this.Controls.SetChildIndex(this.nameLabel, 0);
-      this.Controls.SetChildIndex(this.nameTextBox, 0);
-      this.Controls.SetChildIndex(this.dataTypeLabel, 0);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.Label dataTypeLabel;
-    protected System.Windows.Forms.TextBox dataTypeTextBox;
-
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/ParameterView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ParameterView.cs	(revision 2713)
+++ 	(revision )
@@ -1,77 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// The visual representation of a <see cref="Parameter"/>.
-  /// </summary>
-  [Content(typeof(Parameter), true)]
-  public partial class ParameterView : NamedItemView {
-    /// <summary>
-    /// Gets or sets the variable to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
-    /// No own data storage present.</remarks>
-    public new Parameter Content {
-      get { return (Parameter)base.Content; }
-      set { base.Content = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="VariableView"/> with caption "Variable".
-    /// </summary>
-    public ParameterView() {
-      InitializeComponent();
-      Caption = "Parameter";
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="VariableView"/> with the given <paramref name="variable"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="VariableView()"/>.</remarks>
-    /// <param name="variable">The variable to represent visually.</param>
-    public ParameterView(Parameter parameter)
-      : this() {
-      Content = parameter;
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        Caption = "Parameter";
-        dataTypeTextBox.Text = "-";
-        dataTypeTextBox.Enabled = false;
-      } else {
-        Caption = Content.Name + " (" + Content.GetType().Name + ")";
-        dataTypeTextBox.Text = Content.DataType.Name;
-        dataTypeTextBox.Enabled = true;
-      }
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2713)
+++ /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2714)
@@ -109,8 +109,6 @@
     <Compile Include="Interfaces\IVariable.cs" />
     <Compile Include="Item.cs" />
-    <Compile Include="ItemParameter.cs" />
     <Compile Include="NamedItem.cs" />
     <Compile Include="OperatorGraph.cs" />
-    <Compile Include="OperatorParameter.cs" />
     <Compile Include="Interfaces\IParameter.cs" />
     <Compile Include="OperatorCollection.cs" />
@@ -127,5 +125,4 @@
     <Compile Include="ParameterCollection.cs" />
     <Compile Include="VariableCollection.cs" />
-    <Compile Include="Parameter.cs" />
     <Compile Include="ScopeList.cs" />
     <Compile Include="Interfaces\IDeepCloneable.cs" />
Index: unk/sources/HeuristicLab.Core/3.3/ItemParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ItemParameter.cs	(revision 2713)
+++ 	(revision )
@@ -1,161 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Text;
-using System.Xml;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Represents a parameter.
-  /// </summary>
-  [Item("ItemParameter", "A parameter which represents an IItem.")]
-  [Creatable("Test")]
-  public class ItemParameter : Parameter {
-    [Storable]
-    private string actualName;
-    public string ActualName {
-      get { return actualName; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if (!actualName.Equals(value)) {
-          actualName = value;
-          OnActualNameChanged();
-        }
-      }
-    }
-
-    private IItem value;
-    [Storable]
-    public IItem Value {
-      get { return this.value; }
-      set {
-        if (value != this.value) {
-          if ((value != null) && (!DataType.IsInstanceOfType(value))) throw new ArgumentException("Static value does not match data type of parameter");
-          if (this.value != null) this.value.Changed -= new ChangedEventHandler(Value_Changed);
-          this.value = value;
-          if (this.value != null) this.value.Changed += new ChangedEventHandler(Value_Changed);
-          OnValueChanged();
-        }
-      }
-    }
-
-    public ItemParameter()
-      : base("Anonymous", null, typeof(IItem)) {
-      actualName = Name;
-      Value = null;
-    }
-    protected ItemParameter(string name, string description, Type dataType)
-      : base(name, description, dataType) {
-      this.actualName = Name;
-      this.Value = null;
-    }
-    public ItemParameter(string name, string description)
-      : base(name, description, typeof(IItem)) {
-      this.actualName = Name;
-      this.Value = null;
-    }
-    public ItemParameter(string name, string description, IItem value)
-      : base(name, description, typeof(IItem)) {
-      this.actualName = Name;
-      this.Value = value;
-    }
-
-    public override IItem GetValue(ExecutionContext context) {
-      ItemParameter param = this;
-      ExecutionContext current = context;
-      string actualName = null;
-      while (param != null) {
-        if (param.Value != null) return param.Value;
-        actualName = param.ActualName;
-        current = current.Parent;
-        while ((current != null) && !current.Operator.Parameters.ContainsKey(actualName))
-          current = current.Parent;
-        if (current != null)
-          param = (ItemParameter)current.Operator.Parameters[actualName];
-        else
-          param = null;
-      }
-
-      IScope scope = context.Scope;
-      while ((scope != null) && !scope.Variables.ContainsKey(actualName))
-        scope = scope.Parent;
-      return scope != null ? scope.Variables[actualName].Value : null;
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      ItemParameter clone = (ItemParameter)base.Clone(cloner);
-      clone.actualName = actualName;
-      clone.Value = (IItem)cloner.Clone(value);
-      return clone;
-    }
-
-    public override string ToString() {
-      return string.Format("{0}: {1} ({2})", Name, Value != null ? Value.ToString() : ActualName, DataType.Name);
-    }
-
-    public event EventHandler ActualNameChanged;
-    private void OnActualNameChanged() {
-      if (ActualNameChanged != null)
-        ActualNameChanged(this, new EventArgs());
-      OnChanged();
-    }
-    public event EventHandler ValueChanged;
-    private void OnValueChanged() {
-      if (ValueChanged != null)
-        ValueChanged(this, new EventArgs());
-      OnChanged();
-    }
-
-    private void Value_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
-    }
-  }
-
-  [Item("ItemParameter<T>", "A generic parameter which represents an instance of type T.")]
-  [EmptyStorableClass]
-  public class ItemParameter<T> : ItemParameter where T : class, IItem {
-    public new T Value {
-      get { return (T)base.Value; }
-      set { base.Value = value; }
-    }
-
-    public ItemParameter()
-      : base("Anonymous", null, typeof(T)) {
-      Value = null;
-    }
-    public ItemParameter(string name, string description)
-      : base(name, description, typeof(T)) {
-      this.Value = null;
-    }
-    public ItemParameter(string name, string description, T value)
-      : base(name, description, typeof(T)) {
-      this.Value = value;
-    }
-
-    public new T GetValue(ExecutionContext context) {
-      return (T)base.GetValue(context);
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Core/3.3/OperatorParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/OperatorParameter.cs	(revision 2713)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Text;
-using System.Xml;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Represents a parameter.
-  /// </summary>
-  [Item("OperatorParameter", "A parameter which represents an operator.")]
-  [EmptyStorableClass]
-  [Creatable("Test")]
-  public class OperatorParameter : ItemParameter<IOperator>, IOperatorParameter {
-    public OperatorParameter()
-      : base("Anonymous", null) {
-    }
-    public OperatorParameter(string name, string description)
-      : base(name, description) {
-    }
-    public OperatorParameter(string name, string description, IOperator value)
-      : base(name, description, value) {
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Core/3.3/Parameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Parameter.cs	(revision 2713)
+++ 	(revision )
@@ -1,70 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Text;
-using System.Xml;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Represents a parameter.
-  /// </summary>
-  [Item("Parameter", "A base class for parameters.")]
-  public abstract class Parameter : NamedItem, IParameter {
-    public override bool CanChangeName {
-      get { return false; }
-    }
-    public override bool CanChangeDescription {
-      get { return false; }
-    }
-
-    [Storable]
-    private Type dataType;
-    public Type DataType {
-      get { return dataType; }
-    }
-
-    protected Parameter()
-      : base("Anonymous") {
-      dataType = typeof(IItem);
-    }
-    protected Parameter(string name, string description, Type dataType)
-      : base(name, description) {
-      if (dataType == null) throw new ArgumentNullException();
-      this.dataType = dataType;
-    }
-
-    public abstract IItem GetValue(ExecutionContext context);
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      Parameter clone = (Parameter)base.Clone(cloner);
-      clone.dataType = dataType;
-      return clone;
-    }
-
-    public override string ToString() {
-      return string.Format("{0} ({1})", Name, DataType.Name);
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Operators/3.3/Counter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Counter.cs	(revision 2713)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Counter.cs	(revision 2714)
@@ -25,4 +25,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.Data;
+using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
Index: /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj	(revision 2713)
+++ /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj	(revision 2714)
@@ -113,4 +113,8 @@
       <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>
Index: /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLabOperatorsPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLabOperatorsPlugin.cs	(revision 2713)
+++ /trunk/sources/HeuristicLab.Operators/3.3/HeuristicLabOperatorsPlugin.cs	(revision 2714)
@@ -35,5 +35,6 @@
   [PluginDependency("HeuristicLab.Core-3.3")]
   [PluginDependency("HeuristicLab.Data-3.3")]
-  [PluginDependency("HeuristicLab.Persistence-3.3")]  
+  [PluginDependency("HeuristicLab.Parameters-3.3")]
+  [PluginDependency("HeuristicLab.Persistence-3.3")]
   public class HeuristicLabOperatorsPlugin : PluginBase {
   }
Index: /trunk/sources/HeuristicLab.Operators/3.3/StandardOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/StandardOperator.cs	(revision 2713)
+++ /trunk/sources/HeuristicLab.Operators/3.3/StandardOperator.cs	(revision 2714)
@@ -24,6 +24,7 @@
 using System.Text;
 using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Core;
 
 namespace HeuristicLab.Operators {
Index: /trunk/sources/HeuristicLab.Parameters.Views/3.3/HeuristicLab.Parameters.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Parameters.Views/3.3/HeuristicLab.Parameters.Views-3.3.csproj	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters.Views/3.3/HeuristicLab.Parameters.Views-3.3.csproj	(revision 2714)
@@ -0,0 +1,118 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Parameters.Views</RootNamespace>
+    <AssemblyName>HeuristicLab.Parameters.Views-3.3</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</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>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\HeuristicLab.Parameters.Views-3.3.XML</DocumentationFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HeuristicLabParametersViewsPlugin.cs" />
+    <Compile Include="ItemParameterView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ItemParameterView.Designer.cs">
+      <DependentUpon>ItemParameterView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ParameterView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ParameterView.Designer.cs">
+      <DependentUpon>ParameterView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.2\HeuristicLab.Common.Resources-3.2.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
+      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
+      <Name>HeuristicLab.Core.Views-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.MainForm.WindowsForms\3.2\HeuristicLab.MainForm.WindowsForms-3.2.csproj">
+      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
+      <Name>HeuristicLab.MainForm.WindowsForms-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.2\HeuristicLab.MainForm-3.2.csproj">
+      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
+      <Name>HeuristicLab.MainForm-3.2</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.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- 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>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /trunk/sources/HeuristicLab.Parameters.Views/3.3/HeuristicLabParametersViewsPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters.Views/3.3/HeuristicLabParametersViewsPlugin.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters.Views/3.3/HeuristicLabParametersViewsPlugin.cs	(revision 2714)
@@ -0,0 +1,41 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Parameters.Views {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Parameters.Views plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Parameters.Views-3.3")]
+  [PluginFile("HeuristicLab.Parameters.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Common.Resources-3.2")]
+  [PluginDependency("HeuristicLab.Core-3.3")]
+  [PluginDependency("HeuristicLab.Core.Views-3.3")]
+  [PluginDependency("HeuristicLab.MainForm-3.2")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms-3.2")]
+  [PluginDependency("HeuristicLab.Parameters-3.3")]
+  public class HeuristicLabParametersViewsPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Parameters.Views/3.3/ItemParameterView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters.Views/3.3/ItemParameterView.Designer.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters.Views/3.3/ItemParameterView.Designer.cs	(revision 2714)
@@ -0,0 +1,209 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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
+
+namespace HeuristicLab.Parameters.Views {
+  partial class ItemParameterView {
+    /// <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) {
+        if (typeSelectorDialog != null) typeSelectorDialog.Dispose();
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component 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.components = new System.ComponentModel.Container();
+      this.valueGroupBox = new System.Windows.Forms.GroupBox();
+      this.valuePanel = new System.Windows.Forms.Panel();
+      this.viewHost = new HeuristicLab.Core.Views.ViewHost();
+      this.clearValueButton = new System.Windows.Forms.Button();
+      this.setValueButton = new System.Windows.Forms.Button();
+      this.actualNameTextBox = new System.Windows.Forms.TextBox();
+      this.actualNameLabel = new System.Windows.Forms.Label();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.valueGroupBox.SuspendLayout();
+      this.valuePanel.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // dataTypeLabel
+      // 
+      this.dataTypeLabel.Location = new System.Drawing.Point(3, 123);
+      this.dataTypeLabel.TabIndex = 6;
+      // 
+      // dataTypeTextBox
+      // 
+      this.dataTypeTextBox.Location = new System.Drawing.Point(80, 120);
+      this.dataTypeTextBox.Size = new System.Drawing.Size(306, 20);
+      this.dataTypeTextBox.TabIndex = 7;
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Location = new System.Drawing.Point(80, 0);
+      this.nameTextBox.Size = new System.Drawing.Size(306, 20);
+      // 
+      // descriptionLabel
+      // 
+      this.descriptionLabel.Location = new System.Drawing.Point(3, 55);
+      this.descriptionLabel.TabIndex = 4;
+      // 
+      // descriptionTextBox
+      // 
+      this.descriptionTextBox.Location = new System.Drawing.Point(80, 52);
+      this.descriptionTextBox.Size = new System.Drawing.Size(306, 62);
+      this.descriptionTextBox.TabIndex = 5;
+      // 
+      // valueGroupBox
+      // 
+      this.valueGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueGroupBox.Controls.Add(this.valuePanel);
+      this.valueGroupBox.Controls.Add(this.clearValueButton);
+      this.valueGroupBox.Controls.Add(this.setValueButton);
+      this.valueGroupBox.Location = new System.Drawing.Point(0, 146);
+      this.valueGroupBox.Name = "valueGroupBox";
+      this.valueGroupBox.Size = new System.Drawing.Size(386, 169);
+      this.valueGroupBox.TabIndex = 10;
+      this.valueGroupBox.TabStop = false;
+      this.valueGroupBox.Text = "&Value:";
+      // 
+      // valuePanel
+      // 
+      this.valuePanel.AllowDrop = true;
+      this.valuePanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.valuePanel.Controls.Add(this.viewHost);
+      this.valuePanel.Location = new System.Drawing.Point(6, 48);
+      this.valuePanel.Name = "valuePanel";
+      this.valuePanel.Size = new System.Drawing.Size(374, 115);
+      this.valuePanel.TabIndex = 0;
+      this.valuePanel.DragOver += new System.Windows.Forms.DragEventHandler(this.valuePanel_DragEnterOver);
+      this.valuePanel.DragDrop += new System.Windows.Forms.DragEventHandler(this.valuePanel_DragDrop);
+      this.valuePanel.DragEnter += new System.Windows.Forms.DragEventHandler(this.valuePanel_DragEnterOver);
+      // 
+      // viewHost
+      // 
+      this.viewHost.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.viewHost.Location = new System.Drawing.Point(0, 0);
+      this.viewHost.Name = "viewHost";
+      this.viewHost.Content = null;
+      this.viewHost.Size = new System.Drawing.Size(374, 115);
+      this.viewHost.TabIndex = 0;
+      // 
+      // clearValueButton
+      // 
+      this.clearValueButton.Enabled = false;
+      this.clearValueButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Remove;
+      this.clearValueButton.Location = new System.Drawing.Point(35, 19);
+      this.clearValueButton.Name = "clearValueButton";
+      this.clearValueButton.Size = new System.Drawing.Size(23, 23);
+      this.clearValueButton.TabIndex = 9;
+      this.toolTip.SetToolTip(this.clearValueButton, "Clear Value");
+      this.clearValueButton.UseVisualStyleBackColor = true;
+      this.clearValueButton.Click += new System.EventHandler(this.clearValueButton_Click);
+      // 
+      // setValueButton
+      // 
+      this.setValueButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Add;
+      this.setValueButton.Location = new System.Drawing.Point(6, 19);
+      this.setValueButton.Name = "setValueButton";
+      this.setValueButton.Size = new System.Drawing.Size(23, 23);
+      this.setValueButton.TabIndex = 8;
+      this.toolTip.SetToolTip(this.setValueButton, "Set Value");
+      this.setValueButton.UseVisualStyleBackColor = true;
+      this.setValueButton.Click += new System.EventHandler(this.setValueButton_Click);
+      // 
+      // actualNameTextBox
+      // 
+      this.actualNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.actualNameTextBox.Location = new System.Drawing.Point(80, 26);
+      this.actualNameTextBox.Name = "actualNameTextBox";
+      this.actualNameTextBox.Size = new System.Drawing.Size(306, 20);
+      this.actualNameTextBox.TabIndex = 3;
+      this.actualNameTextBox.Validated += new System.EventHandler(this.actualNameTextBox_Validated);
+      // 
+      // actualNameLabel
+      // 
+      this.actualNameLabel.AutoSize = true;
+      this.actualNameLabel.Location = new System.Drawing.Point(3, 29);
+      this.actualNameLabel.Name = "actualNameLabel";
+      this.actualNameLabel.Size = new System.Drawing.Size(71, 13);
+      this.actualNameLabel.TabIndex = 2;
+      this.actualNameLabel.Text = "&Actual Name:";
+      // 
+      // ItemParameterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.valueGroupBox);
+      this.Controls.Add(this.actualNameTextBox);
+      this.Controls.Add(this.actualNameLabel);
+      this.Name = "ItemParameterView";
+      this.Size = new System.Drawing.Size(386, 315);
+      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
+      this.Controls.SetChildIndex(this.descriptionLabel, 0);
+      this.Controls.SetChildIndex(this.dataTypeTextBox, 0);
+      this.Controls.SetChildIndex(this.actualNameLabel, 0);
+      this.Controls.SetChildIndex(this.dataTypeLabel, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.actualNameTextBox, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.valueGroupBox, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.valueGroupBox.ResumeLayout(false);
+      this.valuePanel.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.GroupBox valueGroupBox;
+    protected System.Windows.Forms.TextBox actualNameTextBox;
+    protected System.Windows.Forms.Label actualNameLabel;
+    protected System.Windows.Forms.Panel valuePanel;
+    protected HeuristicLab.Core.Views.ViewHost viewHost;
+    protected System.Windows.Forms.Button setValueButton;
+    protected System.Windows.Forms.ToolTip toolTip;
+    protected System.Windows.Forms.Button clearValueButton;
+  }
+}
Index: /trunk/sources/HeuristicLab.Parameters.Views/3.3/ItemParameterView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters.Views/3.3/ItemParameterView.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters.Views/3.3/ItemParameterView.cs	(revision 2714)
@@ -0,0 +1,160 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Parameters.Views {
+  /// <summary>
+  /// The visual representation of a <see cref="Parameter"/>.
+  /// </summary>
+  [Content(typeof(ItemParameter), true)]
+  public partial class ItemParameterView : ParameterView {
+    protected TypeSelectorDialog typeSelectorDialog;
+
+    /// <summary>
+    /// Gets or sets the variable to represent visually.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
+    /// No own data storage present.</remarks>
+    public new ItemParameter Content {
+      get { return (ItemParameter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="VariableView"/> with caption "Variable".
+    /// </summary>
+    public ItemParameterView() {
+      InitializeComponent();
+      Caption = "Parameter";
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="VariableView"/> with the given <paramref name="variable"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="VariableView()"/>.</remarks>
+    /// <param name="variable">The variable to represent visually.</param>
+    public ItemParameterView(ItemParameter parameter)
+      : this() {
+      Content = parameter;
+    }
+
+    /// <summary>
+    /// Removes the eventhandlers from the underlying <see cref="IVariable"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void DeregisterContentEvents() {
+      Content.ActualNameChanged -= new EventHandler(Content_ActualNameChanged);
+      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
+      base.DeregisterContentEvents();
+    }
+
+    /// <summary>
+    /// Adds eventhandlers to the underlying <see cref="IVariable"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ActualNameChanged += new EventHandler(Content_ActualNameChanged);
+      Content.ValueChanged += new EventHandler(Content_ValueChanged);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        Caption = "Parameter";
+        actualNameTextBox.Text = "-";
+        actualNameTextBox.Enabled = false;
+        setValueButton.Enabled = false;
+        clearValueButton.Enabled = false;
+        valueGroupBox.Enabled = false;
+        viewHost.Content = null;
+      } else {
+        Caption = Content.Name + " (" + Content.GetType().Name + ")";
+        actualNameTextBox.Text = Content.ActualName;
+        actualNameTextBox.Enabled = Content.Value == null;
+        setValueButton.Enabled = Content.Value == null;
+        clearValueButton.Enabled = Content.Value != null;
+        valueGroupBox.Enabled = true;
+        viewHost.Content = Content.Value;
+      }
+    }
+
+    protected virtual void Content_ActualNameChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ActualNameChanged), sender, e);
+      else
+        actualNameTextBox.Text = Content.ActualName;
+    }
+    protected virtual void Content_ValueChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ValueChanged), sender, e);
+      else {
+        actualNameTextBox.Enabled = Content.Value == null;
+        setValueButton.Enabled = Content.Value == null;
+        clearValueButton.Enabled = Content.Value != null;
+        viewHost.Content = Content.Value;
+      }
+    }
+
+    protected virtual void actualNameTextBox_Validated(object sender, EventArgs e) {
+      Content.ActualName = actualNameTextBox.Text;
+    }
+    protected virtual void setValueButton_Click(object sender, EventArgs e) {
+      if (typeSelectorDialog == null) {
+        typeSelectorDialog = new TypeSelectorDialog();
+        typeSelectorDialog.Caption = "Select Value Type";
+      }
+      typeSelectorDialog.TypeSelector.Configure(Content.DataType, false, false);
+      if (typeSelectorDialog.ShowDialog(this) == DialogResult.OK)
+        Content.Value = (IItem)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
+    }
+    protected virtual void clearValueButton_Click(object sender, EventArgs e) {
+      Content.Value = null;
+    }
+    protected virtual void valuePanel_DragEnterOver(object sender, DragEventArgs e) {
+      e.Effect = DragDropEffects.None;
+      Type type = e.Data.GetData("Type") as Type;
+      if ((type != null) && (Content.DataType.IsAssignableFrom(type))) {
+        if ((e.KeyState & 8) == 8) e.Effect = DragDropEffects.Copy;  // CTRL key
+        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
+        else if ((e.AllowedEffect & DragDropEffects.Link) == DragDropEffects.Link) e.Effect = DragDropEffects.Link;
+        else if ((e.AllowedEffect & DragDropEffects.Copy) == DragDropEffects.Copy) e.Effect = DragDropEffects.Copy;
+        else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) e.Effect = DragDropEffects.Move;
+      }
+    }
+    protected virtual void valuePanel_DragDrop(object sender, DragEventArgs e) {
+      if (e.Effect != DragDropEffects.None) {
+        IItem item = e.Data.GetData("Value") as IItem;
+        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) item = (IItem)item.Clone();
+        Content.Value = item;
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Parameters.Views/3.3/ParameterView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters.Views/3.3/ParameterView.Designer.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters.Views/3.3/ParameterView.Designer.cs	(revision 2714)
@@ -0,0 +1,119 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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
+
+namespace HeuristicLab.Parameters.Views {
+  partial class ParameterView {
+    /// <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) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component 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.dataTypeLabel = new System.Windows.Forms.Label();
+      this.dataTypeTextBox = new System.Windows.Forms.TextBox();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // nameTextBox
+      // 
+      this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.nameTextBox, 2);
+      this.nameTextBox.Location = new System.Drawing.Point(72, 0);
+      this.nameTextBox.Size = new System.Drawing.Size(321, 20);
+      // 
+      // nameLabel
+      // 
+      this.nameLabel.Location = new System.Drawing.Point(3, 3);
+      // 
+      // descriptionLabel
+      // 
+      this.descriptionLabel.Location = new System.Drawing.Point(3, 29);
+      // 
+      // descriptionTextBox
+      // 
+      this.descriptionTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.descriptionTextBox.Location = new System.Drawing.Point(72, 26);
+      this.descriptionTextBox.Size = new System.Drawing.Size(321, 62);
+      // 
+      // dataTypeLabel
+      // 
+      this.dataTypeLabel.AutoSize = true;
+      this.dataTypeLabel.Location = new System.Drawing.Point(3, 97);
+      this.dataTypeLabel.Name = "dataTypeLabel";
+      this.dataTypeLabel.Size = new System.Drawing.Size(60, 13);
+      this.dataTypeLabel.TabIndex = 4;
+      this.dataTypeLabel.Text = "Data &Type:";
+      // 
+      // dataTypeTextBox
+      // 
+      this.dataTypeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.dataTypeTextBox.Location = new System.Drawing.Point(72, 94);
+      this.dataTypeTextBox.Name = "dataTypeTextBox";
+      this.dataTypeTextBox.ReadOnly = true;
+      this.dataTypeTextBox.Size = new System.Drawing.Size(321, 20);
+      this.dataTypeTextBox.TabIndex = 5;
+      // 
+      // ParameterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.dataTypeLabel);
+      this.Controls.Add(this.dataTypeTextBox);
+      this.Name = "ParameterView";
+      this.Size = new System.Drawing.Size(393, 124);
+      this.Controls.SetChildIndex(this.dataTypeTextBox, 0);
+      this.Controls.SetChildIndex(this.descriptionTextBox, 0);
+      this.Controls.SetChildIndex(this.descriptionLabel, 0);
+      this.Controls.SetChildIndex(this.nameLabel, 0);
+      this.Controls.SetChildIndex(this.nameTextBox, 0);
+      this.Controls.SetChildIndex(this.dataTypeLabel, 0);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.Label dataTypeLabel;
+    protected System.Windows.Forms.TextBox dataTypeTextBox;
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Parameters.Views/3.3/ParameterView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters.Views/3.3/ParameterView.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters.Views/3.3/ParameterView.cs	(revision 2714)
@@ -0,0 +1,78 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Parameters.Views {
+  /// <summary>
+  /// The visual representation of a <see cref="Parameter"/>.
+  /// </summary>
+  [Content(typeof(Parameter), true)]
+  public partial class ParameterView : NamedItemView {
+    /// <summary>
+    /// Gets or sets the variable to represent visually.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
+    /// No own data storage present.</remarks>
+    public new Parameter Content {
+      get { return (Parameter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="VariableView"/> with caption "Variable".
+    /// </summary>
+    public ParameterView() {
+      InitializeComponent();
+      Caption = "Parameter";
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="VariableView"/> with the given <paramref name="variable"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="VariableView()"/>.</remarks>
+    /// <param name="variable">The variable to represent visually.</param>
+    public ParameterView(Parameter parameter)
+      : this() {
+      Content = parameter;
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        Caption = "Parameter";
+        dataTypeTextBox.Text = "-";
+        dataTypeTextBox.Enabled = false;
+      } else {
+        Caption = Content.Name + " (" + Content.GetType().Name + ")";
+        dataTypeTextBox.Text = Content.DataType.Name;
+        dataTypeTextBox.Enabled = true;
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Parameters.Views/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Parameters.Views/3.3/Properties/AssemblyInfo.frame	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters.Views/3.3/Properties/AssemblyInfo.frame	(revision 2714)
@@ -0,0 +1,58 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// 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.Parameters.Views")]
+[assembly: AssemblyDescription("Views of the HeuristicLab parameter classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[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("875dd63d-9de2-40fd-ab09-3cc37d2ac7a3")]
+
+// 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 Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: /trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj	(revision 2714)
@@ -0,0 +1,95 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Parameters</RootNamespace>
+    <AssemblyName>HeuristicLab.Parameters-3.3</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</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>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\HeuristicLab.Parameters-3.3.XML</DocumentationFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HeuristicLabParametersPlugin.cs" />
+    <Compile Include="ItemParameter.cs" />
+    <Compile Include="OperatorParameter.cs" />
+    <Compile Include="Parameter.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </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.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.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\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- 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>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: /trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLabParametersPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLabParametersPlugin.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLabParametersPlugin.cs	(revision 2714)
@@ -0,0 +1,38 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Parameters {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Parameters plugin.
+  /// </summary>
+  [Plugin("HeuristicLab.Parameters-3.3")]
+  [PluginFile("HeuristicLab.Parameters-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections-3.3")]
+  [PluginDependency("HeuristicLab.Core-3.3")]
+  [PluginDependency("HeuristicLab.Persistence-3.3")]
+  public class HeuristicLabParametersPlugin : PluginBase {
+  }
+}
Index: /trunk/sources/HeuristicLab.Parameters/3.3/ItemParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/ItemParameter.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/ItemParameter.cs	(revision 2714)
@@ -0,0 +1,161 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Parameters {
+  /// <summary>
+  /// Represents a parameter.
+  /// </summary>
+  [Item("ItemParameter", "A parameter which represents an IItem.")]
+  [Creatable("Test")]
+  public class ItemParameter : Parameter {
+    [Storable]
+    private string actualName;
+    public string ActualName {
+      get { return actualName; }
+      set {
+        if (value == null) throw new ArgumentNullException();
+        if (!actualName.Equals(value)) {
+          actualName = value;
+          OnActualNameChanged();
+        }
+      }
+    }
+
+    private IItem value;
+    [Storable]
+    public IItem Value {
+      get { return this.value; }
+      set {
+        if (value != this.value) {
+          if ((value != null) && (!DataType.IsInstanceOfType(value))) throw new ArgumentException("Static value does not match data type of parameter");
+          if (this.value != null) this.value.Changed -= new ChangedEventHandler(Value_Changed);
+          this.value = value;
+          if (this.value != null) this.value.Changed += new ChangedEventHandler(Value_Changed);
+          OnValueChanged();
+        }
+      }
+    }
+
+    public ItemParameter()
+      : base("Anonymous", null, typeof(IItem)) {
+      actualName = Name;
+      Value = null;
+    }
+    protected ItemParameter(string name, string description, Type dataType)
+      : base(name, description, dataType) {
+      this.actualName = Name;
+      this.Value = null;
+    }
+    public ItemParameter(string name, string description)
+      : base(name, description, typeof(IItem)) {
+      this.actualName = Name;
+      this.Value = null;
+    }
+    public ItemParameter(string name, string description, IItem value)
+      : base(name, description, typeof(IItem)) {
+      this.actualName = Name;
+      this.Value = value;
+    }
+
+    public override IItem GetValue(ExecutionContext context) {
+      ItemParameter param = this;
+      ExecutionContext current = context;
+      string actualName = null;
+      while (param != null) {
+        if (param.Value != null) return param.Value;
+        actualName = param.ActualName;
+        current = current.Parent;
+        while ((current != null) && !current.Operator.Parameters.ContainsKey(actualName))
+          current = current.Parent;
+        if (current != null)
+          param = (ItemParameter)current.Operator.Parameters[actualName];
+        else
+          param = null;
+      }
+
+      IScope scope = context.Scope;
+      while ((scope != null) && !scope.Variables.ContainsKey(actualName))
+        scope = scope.Parent;
+      return scope != null ? scope.Variables[actualName].Value : null;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      ItemParameter clone = (ItemParameter)base.Clone(cloner);
+      clone.actualName = actualName;
+      clone.Value = (IItem)cloner.Clone(value);
+      return clone;
+    }
+
+    public override string ToString() {
+      return string.Format("{0}: {1} ({2})", Name, Value != null ? Value.ToString() : ActualName, DataType.Name);
+    }
+
+    public event EventHandler ActualNameChanged;
+    private void OnActualNameChanged() {
+      if (ActualNameChanged != null)
+        ActualNameChanged(this, new EventArgs());
+      OnChanged();
+    }
+    public event EventHandler ValueChanged;
+    private void OnValueChanged() {
+      if (ValueChanged != null)
+        ValueChanged(this, new EventArgs());
+      OnChanged();
+    }
+
+    private void Value_Changed(object sender, ChangedEventArgs e) {
+      OnChanged(e);
+    }
+  }
+
+  [Item("ItemParameter<T>", "A generic parameter which represents an instance of type T.")]
+  [EmptyStorableClass]
+  public class ItemParameter<T> : ItemParameter where T : class, IItem {
+    public new T Value {
+      get { return (T)base.Value; }
+      set { base.Value = value; }
+    }
+
+    public ItemParameter()
+      : base("Anonymous", null, typeof(T)) {
+      Value = null;
+    }
+    public ItemParameter(string name, string description)
+      : base(name, description, typeof(T)) {
+      this.Value = null;
+    }
+    public ItemParameter(string name, string description, T value)
+      : base(name, description, typeof(T)) {
+      this.Value = value;
+    }
+
+    public new T GetValue(ExecutionContext context) {
+      return (T)base.GetValue(context);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Parameters/3.3/OperatorParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/OperatorParameter.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/OperatorParameter.cs	(revision 2714)
@@ -0,0 +1,47 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Parameters {
+  /// <summary>
+  /// Represents a parameter.
+  /// </summary>
+  [Item("OperatorParameter", "A parameter which represents an operator.")]
+  [EmptyStorableClass]
+  [Creatable("Test")]
+  public class OperatorParameter : ItemParameter<IOperator>, IOperatorParameter {
+    public OperatorParameter()
+      : base("Anonymous", null) {
+    }
+    public OperatorParameter(string name, string description)
+      : base(name, description) {
+    }
+    public OperatorParameter(string name, string description, IOperator value)
+      : base(name, description, value) {
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/Parameter.cs	(revision 2714)
@@ -0,0 +1,70 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Parameters {
+  /// <summary>
+  /// Represents a parameter.
+  /// </summary>
+  [Item("Parameter", "A base class for parameters.")]
+  public abstract class Parameter : NamedItem, IParameter {
+    public override bool CanChangeName {
+      get { return false; }
+    }
+    public override bool CanChangeDescription {
+      get { return false; }
+    }
+
+    [Storable]
+    private Type dataType;
+    public Type DataType {
+      get { return dataType; }
+    }
+
+    protected Parameter()
+      : base("Anonymous") {
+      dataType = typeof(IItem);
+    }
+    protected Parameter(string name, string description, Type dataType)
+      : base(name, description) {
+      if (dataType == null) throw new ArgumentNullException();
+      this.dataType = dataType;
+    }
+
+    public abstract IItem GetValue(ExecutionContext context);
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      Parameter clone = (Parameter)base.Clone(cloner);
+      clone.dataType = dataType;
+      return clone;
+    }
+
+    public override string ToString() {
+      return string.Format("{0} ({1})", Name, DataType.Name);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Parameters/3.3/Properties/AssemblyInfo.frame
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/Properties/AssemblyInfo.frame	(revision 2714)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/Properties/AssemblyInfo.frame	(revision 2714)
@@ -0,0 +1,58 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// 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.Parameters")]
+[assembly: AssemblyDescription("HeuristicLab parameter classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[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("40e5b7e7-87b3-44cf-9553-99b24a657e7b")]
+
+// 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 Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.3.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
