Index: trunk/sources/HeuristicLab.Parameters/3.3/SubScopesLookupParameter.cs
===================================================================
--- trunk/sources/HeuristicLab.Parameters/3.3/SubScopesLookupParameter.cs	(revision 2793)
+++ trunk/sources/HeuristicLab.Parameters/3.3/SubScopesLookupParameter.cs	(revision 2796)
@@ -33,45 +33,8 @@
   /// </summary>
   [Item("SubScopesLookupParameter<T>", "A generic parameter representing instances of type T which are collected from or written to the sub-scopes of the current scope.")]
-  public class SubScopesLookupParameter<T> : Parameter, ILookupParameter<T> where T : class, IItem {
-    [Storable]
-    private string actualName;
-    public string ActualName {
-      get { return actualName; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if (!actualName.Equals(value)) {
-          actualName = value;
-          OnActualNameChanged();
-        }
-      }
-    }
-
-    public new ItemArray<T> ActualValue {
-      get { return (ItemArray<T>)GetActualValue(); }
-      set { SetActualValue(value); }
-    }
-
-    public SubScopesLookupParameter()
-      : base("Anonymous", typeof(ItemArray<T>)) {
-      actualName = Name;
-    }
-    public SubScopesLookupParameter(string name)
-      : base(name, typeof(ItemArray<T>)) {
-      actualName = Name;
-    }
-    public SubScopesLookupParameter(string name, string description)
-      : base(name, description, typeof(ItemArray<T>)) {
-      actualName = Name;
-    }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      SubScopesLookupParameter<T> clone = (SubScopesLookupParameter<T>)base.Clone(cloner);
-      clone.actualName = actualName;
-      return clone;
-    }
-
-    public override string ToString() {
-      return string.Format("{0}: {1} ({2})", Name, ActualName, DataType.Name);
-    }
+  public class SubScopesLookupParameter<T> : LookupParameter<ItemArray<T>> where T : class, IItem {
+    public SubScopesLookupParameter() : base() { }
+    public SubScopesLookupParameter(string name) : base(name) { }
+    public SubScopesLookupParameter(string name, string description) : base(name, description) { }
 
     protected override IItem GetActualValue() {
@@ -115,11 +78,4 @@
       }
     }
-
-    public event EventHandler ActualNameChanged;
-    private void OnActualNameChanged() {
-      if (ActualNameChanged != null)
-        ActualNameChanged(this, EventArgs.Empty);
-      OnChanged();
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs
===================================================================
--- trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 2793)
+++ trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 2796)
@@ -47,4 +47,16 @@
       }
     }
+    IItem IValueParameter.Value {
+      get { return Value; }
+      set {
+        T val = value as T;
+        if (val == null)
+          throw new InvalidOperationException(
+            string.Format("Type mismatch. Value is not a \"{0}\".",
+                          typeof(T).GetPrettyName())
+          );
+        Value = val;
+      }
+    }
 
     public ValueLookupParameter()
Index: trunk/sources/HeuristicLab.Parameters/3.3/ValueParameter.cs
===================================================================
--- trunk/sources/HeuristicLab.Parameters/3.3/ValueParameter.cs	(revision 2793)
+++ trunk/sources/HeuristicLab.Parameters/3.3/ValueParameter.cs	(revision 2796)
@@ -47,7 +47,15 @@
       }
     }
-    public new T ActualValue {
+    IItem IValueParameter.Value {
       get { return Value; }
-      set { Value = value; }
+      set {
+        T val = value as T;
+        if (val == null)
+          throw new InvalidOperationException(
+            string.Format("Type mismatch. Value is not a \"{0}\".",
+                          typeof(T).GetPrettyName())
+          );
+        Value = val;
+      }
     }
 
@@ -84,11 +92,5 @@
     }
     protected override void SetActualValue(IItem value) {
-      T val = value as T;
-      if (val == null)
-        throw new InvalidOperationException(
-          string.Format("Type mismatch. Value is not a \"{0}\".",
-                        typeof(T).GetPrettyName())
-        );
-      Value = val;
+      ((IValueParameter)this).Value = value;
     }
 
