Index: branches/ParameterBinding/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj
===================================================================
--- branches/ParameterBinding/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj	(revision 4770)
+++ branches/ParameterBinding/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj	(revision 4787)
@@ -111,8 +111,5 @@
     <None Include="HeuristicLabParametersPlugin.cs.frame" />
     <Compile Include="ConstrainedValueParameter.cs" />
-    <Compile Include="ParameterSecondLevelNameBinding.cs" />
-    <Compile Include="ParameterValueBinding.cs" />
     <Compile Include="OptionalConstrainedValueParameter.cs" />
-    <Compile Include="ParameterNameBinding.cs" />
     <Compile Include="ScopeTreeLookupParameter.cs" />
     <Compile Include="ValueParameter.cs" />
Index: branches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterNameBinding.cs
===================================================================
--- branches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterNameBinding.cs	(revision 4770)
+++ 	(revision )
@@ -1,87 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Core;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Parameters {
-  [StorableClass]
-  public class ParameterNameBinding : IParameterBinding {
-    [Storable]
-    private IParameter source;
-    public IParameter Source {
-      get { return source; }
-    }
-    private ILookupParameter sourceAsLookup;
-
-    [Storable]
-    private ILookupParameter target;
-    public ILookupParameter Target {
-      get { return target; }
-    }
-
-    [StorableConstructor]
-    protected ParameterNameBinding(bool deserializing) { }
-    protected ParameterNameBinding(ParameterNameBinding original, Cloner cloner) {
-      this.source = cloner.Clone(source);
-      this.target = cloner.Clone(target);
-      this.sourceAsLookup = this.source as ILookupParameter;
-      RegisterEventHandlers();
-    }
-    public ParameterNameBinding(ILookupParameter target, IParameter source) {
-      if (source == null) throw new ArgumentNullException("source");
-      if (target == null) throw new ArgumentNullException("target");
-      this.source = source;
-      this.target = target;
-      this.sourceAsLookup = this.source as ILookupParameter;
-    }
-
-    public object Clone() {
-      return Clone(new Cloner());
-    }
-
-    public virtual IDeepCloneable Clone(Cloner cloner) {
-      return new ParameterNameBinding(this, cloner);
-    }
-
-    public void Bind() {
-      RegisterEventHandlers();
-      ExecuteBinding();
-    }
-
-    public void Unbind() {
-      DeregisterEventHandlers();
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      this.sourceAsLookup = this.source as ILookupParameter;
-      RegisterEventHandlers();
-    }
-
-    private void RegisterEventHandlers() {
-      if (sourceAsLookup != null)
-        sourceAsLookup.ActualNameChanged += new EventHandler(source_NameChanged);
-      else source.NameChanged += new EventHandler(source_NameChanged);
-    }
-
-    private void DeregisterEventHandlers() {
-      if (sourceAsLookup != null)
-        sourceAsLookup.ActualNameChanged -= new EventHandler(source_NameChanged);
-      else source.NameChanged -= new EventHandler(source_NameChanged);
-    }
-
-    private void source_NameChanged(object sender, EventArgs e) {
-      ExecuteBinding();
-    }
-
-    private void ExecuteBinding() {
-      if (sourceAsLookup != null) {
-        if (target.ActualName != sourceAsLookup.ActualName)
-          target.ActualName = sourceAsLookup.ActualName;
-      } else target.ActualName = source.Name;
-    }
-  }
-}
Index: branches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterSecondLevelNameBinding.cs
===================================================================
--- branches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterSecondLevelNameBinding.cs	(revision 4770)
+++ 	(revision )
@@ -1,103 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Core;
-using HeuristicLab.Common;
-using System.Reflection;
-
-namespace HeuristicLab.Parameters {
-  [StorableClass]
-  public class ParameterSecondLevelNameBinding : IParameterBinding {
-    [Storable]
-    private IValueParameter source;
-    public IValueParameter Source {
-      get { return source; }
-    }
-    [Storable]
-    private ILookupParameter target;
-    public ILookupParameter Target {
-      get { return target; }
-    }
-    [Storable]
-    private string sourcePropertyName;
-    public string SourcePropertyName {
-      get { return sourcePropertyName; }
-    }
-    [Storable]
-    private ParameterNameBinding nameBinding;
-
-    [StorableConstructor]
-    protected ParameterSecondLevelNameBinding(bool deserializing) { }
-    protected ParameterSecondLevelNameBinding(ParameterSecondLevelNameBinding original, Cloner cloner) {
-      this.source = cloner.Clone(source);
-      this.target = cloner.Clone(target);
-      this.sourcePropertyName = original.sourcePropertyName;
-      RegisterEventHandlers(); // nameBinding does not need to be cloned, is recreated here
-    }
-    public ParameterSecondLevelNameBinding(ILookupParameter target, IValueParameter source, string sourcePropertyName) {
-      if (source == null) throw new ArgumentNullException("source");
-      if (target == null) throw new ArgumentNullException("target");
-      this.source = source;
-      this.target = target;
-      this.sourcePropertyName = sourcePropertyName;
-      this.nameBinding = null;
-    }
-
-    public object Clone() {
-      return Clone(new Cloner());
-    }
-
-    public virtual IDeepCloneable Clone(Cloner cloner) {
-      return new ParameterSecondLevelNameBinding(this, cloner);
-    }
-
-    public void Bind() {
-      RegisterEventHandlers();
-    }
-
-    public void Unbind() {
-      DeregisterEventHandlers();
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      RegisterEventHandlers();
-    }
-
-    private void RegisterEventHandlers() {
-      source.ValueChanged += new EventHandler(source_ValueChanged);
-      IParameter sourceParameter = GetNestedParameter(source, sourcePropertyName);
-      if (sourceParameter != null) {
-        nameBinding = new ParameterNameBinding(target, sourceParameter);
-        nameBinding.Bind();
-      }
-    }
-
-    private void DeregisterEventHandlers() {
-      source.ValueChanged -= new EventHandler(source_ValueChanged);
-
-      if (nameBinding != null) nameBinding.Unbind();
-      nameBinding = null;
-    }
-
-    private void source_ValueChanged(object sender, EventArgs e) {
-      IParameter sourceParameter = GetNestedParameter(source, sourcePropertyName);
-      if (sourceParameter != null) {
-        if (nameBinding != null) nameBinding.Unbind();
-        nameBinding = new ParameterNameBinding(target, sourceParameter);
-        nameBinding.Bind();
-      }
-    }
-
-    private IParameter GetNestedParameter(IValueParameter param, string name) {
-      if (param.Value == null) return null;
-      PropertyInfo property = param.Value.GetType().GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic);
-      if (property == null) return null;
-      if (property.GetGetMethod() == null) throw new InvalidOperationException("Property " + name + " of type " + param.Value.GetType().FullName + " does not have a Get method.");
-      IParameter nestedParam = (property.GetGetMethod().Invoke(param.Value, null) as IParameter);
-      return nestedParam;
-    }
-  }
-}
Index: branches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterValueBinding.cs
===================================================================
--- branches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterValueBinding.cs	(revision 4770)
+++ 	(revision )
@@ -1,75 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Core;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Parameters {
-  [StorableClass]
-  public class ParameterValueBinding : IParameterBinding {
-    [Storable]
-    private IValueParameter target;
-    public IValueParameter Target {
-      get { return target; }
-    }
-    [Storable]
-    private IValueParameter source;
-    public IValueParameter Source {
-      get { return source; }
-    }
-
-    [StorableConstructor]
-    protected ParameterValueBinding(bool deserializing) { }
-    protected ParameterValueBinding(ParameterValueBinding original, Cloner cloner) {
-      this.source = cloner.Clone(source);
-      this.target = cloner.Clone(target);
-      RegisterEventHandlers();
-    }
-    public ParameterValueBinding(IValueParameter target, IValueParameter source) {
-      if (target == null) throw new ArgumentNullException("destination");
-      if (source == null) throw new ArgumentNullException("source");
-      this.target = target;
-      this.source = source;
-    }
-
-    public object Clone() {
-      return Clone(new Cloner());
-    }
-
-    public virtual IDeepCloneable Clone(Cloner cloner) {
-      return new ParameterValueBinding(this, cloner);
-    }
-
-    public void Bind() {
-      RegisterEventHandlers();
-      ExecuteBinding();
-    }
-
-    public void Unbind() {
-      DeregisterEventHandlers();
-    }
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-      RegisterEventHandlers();
-    }
-
-    private void RegisterEventHandlers() {
-      source.ValueChanged += new EventHandler(source_ValueChanged);
-    }
-
-    private void DeregisterEventHandlers() {
-      source.ValueChanged -= new EventHandler(source_ValueChanged);
-    }
-
-    private void source_ValueChanged(object sender, EventArgs e) {
-      ExecuteBinding();
-    }
-
-    private void ExecuteBinding() {
-      target.Value = (IItem)source.Value.Clone();
-    }
-  }
-}
