Index: /trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj	(revision 3659)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj	(revision 3660)
@@ -87,8 +87,8 @@
     <Compile Include="ConstrainedValueParameter.cs" />
     <Compile Include="OptionalConstrainedValueParameter.cs" />
+    <Compile Include="ScopeTreeLookupParameter.cs" />
     <Compile Include="ValueParameter.cs" />
     <Compile Include="LookupParameter.cs" />
     <Compile Include="OptionalValueParameter.cs" />
-    <Compile Include="SubScopesLookupParameter.cs" />
     <Compile Include="ValueLookupParameter.cs" />
     <Compile Include="ScopeParameter.cs" />
Index: /trunk/sources/HeuristicLab.Parameters/3.3/ScopeTreeLookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/ScopeTreeLookupParameter.cs	(revision 3660)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/ScopeTreeLookupParameter.cs	(revision 3660)
@@ -0,0 +1,131 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Parameters {
+  /// <summary>
+  /// A generic parameter representing instances of type T which are collected from or written to scope tree.
+  /// </summary>
+  [Item("ScopeTreeLookupParameter<T>", "A generic parameter representing instances of type T which are collected from or written to scope tree.")]
+  [StorableClass]
+  public class ScopeTreeLookupParameter<T> : LookupParameter<ItemArray<T>> where T : class, IItem {
+    [Storable]
+    private int depth;
+    public int Depth {
+      get { return depth; }
+      set {
+        if (value < 0) throw new ArgumentException("Depth must be larger than or equal to 0.");
+        if (depth != value) {
+          depth = value;
+          OnDepthChanged();
+        }
+      }
+    }
+
+    public ScopeTreeLookupParameter()
+      : base() {
+      depth = 1;
+    }
+    public ScopeTreeLookupParameter(string name)
+      : base(name) {
+      depth = 1;
+    }
+    public ScopeTreeLookupParameter(string name, string description)
+      : base(name, description) {
+      depth = 1;
+    }
+    public ScopeTreeLookupParameter(string name, string description, string actualName)
+      : base(name, description, actualName) {
+      depth = 1;
+    }
+    [StorableConstructor]
+    protected ScopeTreeLookupParameter(bool deserializing) : base(deserializing) { }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      ScopeTreeLookupParameter<T> clone = (ScopeTreeLookupParameter<T>)base.Clone(cloner);
+      clone.depth = depth;
+      return clone;
+    }
+
+    protected override IItem GetActualValue() {
+      string name = LookupParameter<ItemArray<T>>.TranslateName(Name, ExecutionContext);
+
+      IEnumerable<IScope> scopes = new IScope[] { ExecutionContext.Scope };
+      for (int i = 0; i < depth; i++)
+        scopes = scopes.Select(x => (IEnumerable<IScope>)x.SubScopes).Aggregate((a, b) => a.Concat(b));
+
+      List<T> values = new List<T>();
+      IVariable var;
+      T value;
+      foreach (IScope scope in scopes) {
+        scope.Variables.TryGetValue(name, out var);
+        if (var != null) {
+          value = var.Value as T;
+          if ((var.Value != null) && (value == null))
+            throw new InvalidOperationException(
+              string.Format("Type mismatch. Variable \"{0}\" does not contain a \"{1}\".",
+                            name,
+                            typeof(T).GetPrettyName())
+            );
+          values.Add(value);
+        }
+      }
+      return new ItemArray<T>(values);
+    }
+    protected override void SetActualValue(IItem value) {
+      ItemArray<T> values = value as ItemArray<T>;
+      if (values == null)
+        throw new InvalidOperationException(
+          string.Format("Type mismatch. Value is not a \"{0}\".",
+                        typeof(ItemArray<T>).GetPrettyName())
+        );
+
+      string name = LookupParameter<ItemArray<T>>.TranslateName(Name, ExecutionContext);
+
+      IEnumerable<IScope> scopes = new IScope[] { ExecutionContext.Scope };
+      for (int i = 0; i < depth; i++)
+        scopes = scopes.Select(x => (IEnumerable<IScope>)x.SubScopes).Aggregate((a, b) => a.Concat(b));
+
+      if (scopes.Count() != values.Length) throw new InvalidOperationException("Number of values is not equal to number of scopes.");
+
+      int j = 0;
+      IVariable var;
+      foreach (IScope scope in scopes) {
+        scope.Variables.TryGetValue(name, out var);
+        if (var != null) var.Value = values[j];
+        else scope.Variables.Add(new Variable(name, values[j]));
+        j++;
+      }
+    }
+
+    public event EventHandler DepthChanged;
+    protected virtual void OnDepthChanged() {
+      EventHandler handler = DepthChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+  }
+}
Index: unk/sources/HeuristicLab.Parameters/3.3/SubScopesLookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/SubScopesLookupParameter.cs	(revision 3659)
+++ 	(revision )
@@ -1,131 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 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.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-
-namespace HeuristicLab.Parameters {
-  /// <summary>
-  /// A generic parameter representing instances of type T which are collected from or written to scope tree.
-  /// </summary>
-  [Item("ScopeTreeLookupParameter<T>", "A generic parameter representing instances of type T which are collected from or written to scope tree.")]
-  [StorableClass]
-  public class ScopeTreeLookupParameter<T> : LookupParameter<ItemArray<T>> where T : class, IItem {
-    [Storable]
-    private int depth;
-    public int Depth {
-      get { return depth; }
-      set {
-        if (value < 0) throw new ArgumentException("Depth must be larger than or equal to 0.");
-        if (depth != value) {
-          depth = value;
-          OnDepthChanged();
-        }
-      }
-    }
-
-    public ScopeTreeLookupParameter()
-      : base() {
-      depth = 1;
-    }
-    public ScopeTreeLookupParameter(string name)
-      : base(name) {
-      depth = 1;
-    }
-    public ScopeTreeLookupParameter(string name, string description)
-      : base(name, description) {
-      depth = 1;
-    }
-    public ScopeTreeLookupParameter(string name, string description, string actualName)
-      : base(name, description, actualName) {
-      depth = 1;
-    }
-    [StorableConstructor]
-    protected ScopeTreeLookupParameter(bool deserializing) : base(deserializing) { }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      ScopeTreeLookupParameter<T> clone = (ScopeTreeLookupParameter<T>)base.Clone(cloner);
-      clone.depth = depth;
-      return clone;
-    }
-
-    protected override IItem GetActualValue() {
-      string name = LookupParameter<ItemArray<T>>.TranslateName(Name, ExecutionContext);
-
-      IEnumerable<IScope> scopes = new IScope[] { ExecutionContext.Scope };
-      for (int i = 0; i < depth; i++)
-        scopes = scopes.Select(x => (IEnumerable<IScope>)x.SubScopes).Aggregate((a, b) => a.Concat(b));
-
-      List<T> values = new List<T>();
-      IVariable var;
-      T value;
-      foreach (IScope scope in scopes) {
-        scope.Variables.TryGetValue(name, out var);
-        if (var != null) {
-          value = var.Value as T;
-          if ((var.Value != null) && (value == null))
-            throw new InvalidOperationException(
-              string.Format("Type mismatch. Variable \"{0}\" does not contain a \"{1}\".",
-                            name,
-                            typeof(T).GetPrettyName())
-            );
-          values.Add(value);
-        }
-      }
-      return new ItemArray<T>(values);
-    }
-    protected override void SetActualValue(IItem value) {
-      ItemArray<T> values = value as ItemArray<T>;
-      if (values == null)
-        throw new InvalidOperationException(
-          string.Format("Type mismatch. Value is not a \"{0}\".",
-                        typeof(ItemArray<T>).GetPrettyName())
-        );
-
-      string name = LookupParameter<ItemArray<T>>.TranslateName(Name, ExecutionContext);
-
-      IEnumerable<IScope> scopes = new IScope[] { ExecutionContext.Scope };
-      for (int i = 0; i < depth; i++)
-        scopes = scopes.Select(x => (IEnumerable<IScope>)x.SubScopes).Aggregate((a, b) => a.Concat(b));
-
-      if (scopes.Count() != values.Length) throw new InvalidOperationException("Number of values is not equal to number of scopes.");
-
-      int j = 0;
-      IVariable var;
-      foreach (IScope scope in scopes) {
-        scope.Variables.TryGetValue(name, out var);
-        if (var != null) var.Value = values[j];
-        else scope.Variables.Add(new Variable(name, values[j]));
-        j++;
-      }
-    }
-
-    public event EventHandler DepthChanged;
-    protected virtual void OnDepthChanged() {
-      EventHandler handler = DepthChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-  }
-}
