Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperatorParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperatorParameter.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IOperatorParameter.cs	(revision 2715)
@@ -30,6 +30,4 @@
     IOperator Value { get; set; }
 
-    new IOperator GetValue(ExecutionContext context);
-
     event EventHandler ActualNameChanged;
     event EventHandler ValueChanged;
Index: /trunk/sources/HeuristicLab.Operators/3.3/Counter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Counter.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Counter.cs	(revision 2715)
@@ -50,6 +50,6 @@
 
     public override ExecutionContextCollection Apply(ExecutionContext context) {
-      IntData value = Value.GetValue(context);
-      IntData increment = Increment.GetValue(context);
+      IntData value = (IntData)Value.GetValue(context);
+      IntData increment = (IntData)Increment.GetValue(context);
       value.Value += increment.Value;
       return base.Apply(context);
Index: /trunk/sources/HeuristicLab.Operators/3.3/StandardOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/StandardOperator.cs	(revision 2714)
+++ /trunk/sources/HeuristicLab.Operators/3.3/StandardOperator.cs	(revision 2715)
@@ -46,5 +46,5 @@
 
     public override ExecutionContextCollection Apply(ExecutionContext context) {
-      IOperator successor = Successor.GetValue(context);
+      IOperator successor = (IOperator)Successor.GetValue(context);
       if (successor != null)
         return new ExecutionContextCollection(new ExecutionContext(context.Parent, successor, context.Scope));
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 2715)
@@ -21,5 +21,5 @@
 
 namespace HeuristicLab.Parameters.Views {
-  partial class ItemParameterView {
+  partial class ItemParameterView<T> {
     /// <summary> 
     /// Required designer variable.
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 2715)
@@ -35,6 +35,6 @@
   /// The visual representation of a <see cref="Parameter"/>.
   /// </summary>
-  [Content(typeof(ItemParameter), true)]
-  public partial class ItemParameterView : ParameterView {
+  [Content(typeof(ItemParameter<>), true)]
+  public partial class ItemParameterView<T> : ParameterView where T : class, IItem {
     protected TypeSelectorDialog typeSelectorDialog;
 
@@ -44,6 +44,6 @@
     /// <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; }
+    public new ItemParameter<T> Content {
+      get { return (ItemParameter<T>)base.Content; }
       set { base.Content = value; }
     }
@@ -61,5 +61,5 @@
     /// <remarks>Calls <see cref="VariableView()"/>.</remarks>
     /// <param name="variable">The variable to represent visually.</param>
-    public ItemParameterView(ItemParameter parameter)
+    public ItemParameterView(ItemParameter<T> parameter)
       : this() {
       Content = parameter;
@@ -134,5 +134,5 @@
       typeSelectorDialog.TypeSelector.Configure(Content.DataType, false, false);
       if (typeSelectorDialog.ShowDialog(this) == DialogResult.OK)
-        Content.Value = (IItem)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
+        Content.Value = (T)typeSelectorDialog.TypeSelector.CreateInstanceOfSelectedType();
     }
     protected virtual void clearValueButton_Click(object sender, EventArgs e) {
@@ -152,6 +152,6 @@
     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();
+        T item = e.Data.GetData("Value") as T;
+        if ((e.Effect & DragDropEffects.Copy) == DragDropEffects.Copy) item = (T)item.Clone();
         Content.Value = item;
       }
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 2715)
@@ -31,7 +31,6 @@
   /// Represents a parameter.
   /// </summary>
-  [Item("ItemParameter", "A parameter which represents an IItem.")]
-  [Creatable("Test")]
-  public class ItemParameter : Parameter {
+  [Item("ItemParameter<T>", "A generic parameter which represents an instance of type T.")]
+  public class ItemParameter<T> : Parameter where T : class, IItem {
     [Storable]
     private string actualName;
@@ -47,7 +46,7 @@
     }
 
-    private IItem value;
+    private T value;
     [Storable]
-    public IItem Value {
+    public T Value {
       get { return this.value; }
       set {
@@ -63,20 +62,15 @@
 
     public ItemParameter()
-      : base("Anonymous", null, typeof(IItem)) {
+      : base("Anonymous", null, typeof(T)) {
       actualName = Name;
       Value = null;
     }
-    protected ItemParameter(string name, string description, Type dataType)
-      : base(name, description, dataType) {
+    public ItemParameter(string name, string description)
+      : base(name, description, typeof(T)) {
       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)) {
+    public ItemParameter(string name, string description, T value)
+      : base(name, description, typeof(T)) {
       this.actualName = Name;
       this.Value = value;
@@ -84,5 +78,5 @@
 
     public override IItem GetValue(ExecutionContext context) {
-      ItemParameter param = this;
+      ItemParameter<T> param = this;
       ExecutionContext current = context;
       string actualName = null;
@@ -94,5 +88,5 @@
           current = current.Parent;
         if (current != null)
-          param = (ItemParameter)current.Operator.Parameters[actualName];
+          param = (ItemParameter<T>)current.Operator.Parameters[actualName];
         else
           param = null;
@@ -106,7 +100,7 @@
 
     public override IDeepCloneable Clone(Cloner cloner) {
-      ItemParameter clone = (ItemParameter)base.Clone(cloner);
+      ItemParameter<T> clone = (ItemParameter<T>)base.Clone(cloner);
       clone.actualName = actualName;
-      clone.Value = (IItem)cloner.Clone(value);
+      clone.Value = (T)cloner.Clone(value);
       return clone;
     }
@@ -133,29 +127,3 @@
     }
   }
-
-  [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);
-    }
-  }
 }
