Index: /branches/ParameterBinding/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 4786)
+++ /branches/ParameterBinding/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 4787)
@@ -143,5 +143,6 @@
     <Compile Include="Constraints\IConstraint.cs" />
     <Compile Include="Constraints\TypeCompatibilityConstraint.cs" />
-    <Compile Include="Interfaces\IParameterBinding.cs" />
+    <Compile Include="Interfaces\IItemBinding.cs" />
+    <Compile Include="ItemBinding.cs" />
     <Compile Include="OperatorExecutionException.cs" />
     <Compile Include="Interfaces\IScopeTreeLookupParameter.cs" />
Index: /branches/ParameterBinding/HeuristicLab.Core/3.3/Interfaces/IItemBinding.cs
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Core/3.3/Interfaces/IItemBinding.cs	(revision 4787)
+++ /branches/ParameterBinding/HeuristicLab.Core/3.3/Interfaces/IItemBinding.cs	(revision 4787)
@@ -0,0 +1,12 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Core {
+  public interface IItemBinding : IDeepCloneable {
+    void Bind();
+    void Unbind();
+  }
+}
Index: anches/ParameterBinding/HeuristicLab.Core/3.3/Interfaces/IParameterBinding.cs
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Core/3.3/Interfaces/IParameterBinding.cs	(revision 4786)
+++ 	(revision )
@@ -1,12 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Core {
-  public interface IParameterBinding : IDeepCloneable {
-    void Bind();
-    void Unbind();
-  }
-}
Index: /branches/ParameterBinding/HeuristicLab.Core/3.3/ItemBinding.cs
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Core/3.3/ItemBinding.cs	(revision 4787)
+++ /branches/ParameterBinding/HeuristicLab.Core/3.3/ItemBinding.cs	(revision 4787)
@@ -0,0 +1,155 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common;
+using System.Reflection;
+using System.Reflection.Emit;
+
+namespace HeuristicLab.Core {
+  [StorableClass]
+  public sealed class ItemBinding : IItemBinding {
+    private static readonly BindingFlags Flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
+    [Storable]
+    private IDeepCloneable target;
+    [Storable]
+    private string targetPath;
+    [Storable]
+    private IDeepCloneable source;
+    [Storable]
+    private string sourcePath;
+    [Storable]
+    private bool bound;
+
+    private Dictionary<Type, Delegate> eventHandlerCache = new Dictionary<Type, Delegate>();
+
+    [StorableConstructor]
+    private ItemBinding(bool deserializing) { }
+    private ItemBinding(ItemBinding original, Cloner cloner) {
+      this.target = cloner.Clone(original.target);
+      this.targetPath = original.targetPath;
+      this.source = cloner.Clone(original.source);
+      this.sourcePath = original.sourcePath;
+      if (original.bound) Bind();
+    }
+    public ItemBinding(IDeepCloneable target, string targetPath, IDeepCloneable source, string sourcePath) {
+      this.target = target;
+      this.targetPath = targetPath;
+      this.source = source;
+      this.sourcePath = sourcePath;
+      this.bound = false;
+    }
+
+    public IDeepCloneable Clone(Cloner cloner) {
+      return new ItemBinding(this, cloner);
+    }
+
+    public object Clone() {
+      return Clone(new Cloner());
+    }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      if (bound) RegisterEventHandlers();
+    }
+
+    public void Bind() {
+      RegisterEventHandlers();
+      bound = true;
+      ExecuteBinding(null);
+    }
+
+    public void Unbind() {
+      DeregisterEventHandlers();
+      bound = false;
+    }
+
+    private void RegisterEventHandlers() {
+      string[] properties = sourcePath.Split('.');
+      object current = source;
+      foreach (string property in properties) {
+        TryHookToChangedEvent(current, property + "Changed");
+        MethodInfo mInfo = current.GetType().GetProperty(property, Flags).GetGetMethod(true);
+        object next = mInfo.Invoke(current, null);
+        if (next == null) return;
+        current = next;
+      }
+    }
+
+    private void DeregisterEventHandlers() {
+      string[] properties = sourcePath.Split('.');
+      object current = source;
+      foreach (string property in properties) {
+        TryUnhookFromChangedEvent(current, property + "Changed");
+        MethodInfo mInfo = current.GetType().GetProperty(property, Flags).GetGetMethod(true);
+        object next = mInfo.Invoke(current, null);
+        if (next == null) return;
+        current = next;
+      }
+    }
+
+    // DO NOT RENAME (string reference to this method name in CreateAndAddDynamicEventHandler)
+    private void ExecuteBinding(object sender) {
+      string[] sourceProperties = sourcePath.Split('.');
+      object cSource = source;
+      PropertyInfo bindingProperty = null;
+      bool reregister = false;
+      for (int i = 0; i < sourceProperties.Length; i++) {
+        if (cSource == null) return;
+        string property = sourceProperties[i];
+        if (reregister) TryHookToChangedEvent(cSource, property + "Changed");
+        if (cSource == sender) reregister = true;
+        bindingProperty = cSource.GetType().GetProperty(property, Flags);
+        object next = bindingProperty.GetGetMethod(true).Invoke(cSource, null);
+        cSource = next;
+      }
+
+      string[] targetProperties = targetPath.Split('.');
+      object cTarget = target;
+      for (int i = 0; i < targetProperties.Length - 1; i++) {
+        cTarget = cTarget.GetType().GetProperty(targetProperties[i], Flags).GetGetMethod(true).Invoke(cTarget, null);
+        if (cTarget == null) return;
+      }
+      MethodInfo setter = cTarget.GetType().GetProperty(targetProperties.Last(), Flags).GetSetMethod(true);
+      if (cSource.GetType().IsValueType)
+        setter.Invoke(cTarget, new object[] { cSource });
+      else if (cSource is ICloneable)
+        setter.Invoke(cTarget, new object[] { ((ICloneable)cSource).Clone() });
+      else throw new InvalidOperationException("Can only bind to targets which are either a ValueType or an ICloneable.");
+    }
+
+    private bool TryHookToChangedEvent(object obj, string property) {
+      EventInfo eInfo = obj.GetType().GetEvent(property, Flags);
+      if (eInfo != null) {
+        Type[] methodParams = eInfo.EventHandlerType.GetMethod("Invoke").GetParameters().Select(x => x.ParameterType).ToArray();
+        if (!eventHandlerCache.ContainsKey(methodParams[1]))
+          CreateAndAddDynamicEventHandler(eInfo, methodParams);
+        eInfo.AddEventHandler(obj, eventHandlerCache[methodParams[1]]);
+      }
+      return eInfo != null;
+    }
+
+    private bool TryUnhookFromChangedEvent(object obj, string property) {
+      EventInfo eInfo = obj.GetType().GetEvent(property, Flags);
+      if (eInfo != null) {
+        Type[] methodParams = eInfo.EventHandlerType.GetMethod("Invoke").GetParameters().Select(x => x.ParameterType).ToArray();
+        if (eventHandlerCache.ContainsKey(methodParams[1]))
+          eInfo.RemoveEventHandler(obj, eventHandlerCache[methodParams[1]]);
+      }
+      return eInfo != null;
+    }
+
+    private void CreateAndAddDynamicEventHandler(EventInfo eInfo, Type[] methodParams) {
+      Type[] instanceMethodParams = new Type[] { GetType() }.Concat(methodParams).ToArray();
+      DynamicMethod dynamicEventHandler = new DynamicMethod("sourceChanged", null, instanceMethodParams, GetType());
+      MethodInfo executeBindingMethodInfo = GetType().GetMethod("ExecuteBinding", Flags);
+      ILGenerator iLG = dynamicEventHandler.GetILGenerator();
+      iLG.Emit(OpCodes.Ldarg_0); // load 'this' pointer
+      iLG.Emit(OpCodes.Ldarg_1); // load sender parameter
+      iLG.Emit(OpCodes.Call, executeBindingMethodInfo); // call method to execute the binding
+      iLG.Emit(OpCodes.Ret);
+      eventHandlerCache.Add(methodParams[1], dynamicEventHandler.CreateDelegate(eInfo.EventHandlerType, this));
+    }
+  }
+}
Index: /branches/ParameterBinding/HeuristicLab.Core/3.3/ParameterizedNamedItem.cs
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Core/3.3/ParameterizedNamedItem.cs	(revision 4786)
+++ /branches/ParameterBinding/HeuristicLab.Core/3.3/ParameterizedNamedItem.cs	(revision 4787)
@@ -33,6 +33,6 @@
   public abstract class ParameterizedNamedItem : NamedItem, IParameterizedNamedItem {
     [Storable]
-    private List<IParameterBinding> parameterBindingList;
-    public List<IParameterBinding> ParameterBindingList {
+    private List<IItemBinding> parameterBindingList;
+    public List<IItemBinding> ParameterBindingList {
       get { return parameterBindingList; }
     }
@@ -62,5 +62,5 @@
       name = ItemName;
       description = ItemDescription;
-      parameterBindingList = new List<IParameterBinding>();
+      parameterBindingList = new List<IItemBinding>();
       parameters = new ParameterCollection();
       readOnlyParameters = null;
@@ -69,5 +69,5 @@
       : base(name) {
       description = ItemDescription;
-      parameterBindingList = new List<IParameterBinding>();
+      parameterBindingList = new List<IItemBinding>();
       parameters = new ParameterCollection();
       readOnlyParameters = null;
@@ -76,5 +76,5 @@
       : base(name) {
       description = ItemDescription;
-      parameterBindingList = new List<IParameterBinding>();
+      parameterBindingList = new List<IItemBinding>();
       this.parameters = parameters;
       readOnlyParameters = null;
@@ -82,5 +82,5 @@
     protected ParameterizedNamedItem(string name, string description)
       : base(name, description) {
-      parameterBindingList = new List<IParameterBinding>();
+      parameterBindingList = new List<IItemBinding>();
       parameters = new ParameterCollection();
       readOnlyParameters = null;
@@ -88,5 +88,5 @@
     protected ParameterizedNamedItem(string name, string description, ParameterCollection parameters)
       : base(name, description) {
-      parameterBindingList = new List<IParameterBinding>();
+      parameterBindingList = new List<IItemBinding>();
       this.parameters = parameters;
       readOnlyParameters = null;
@@ -105,4 +105,22 @@
     }
 
+    protected virtual void AddBinding(string targetPath, string sourcePath) {
+      ItemBinding binding = new ItemBinding(this, targetPath, this, sourcePath);
+      parameterBindingList.Add(binding);
+      binding.Bind();
+    }
+
+    protected virtual void AddSourceBinding(IDeepCloneable target, string targetPath, string sourcePath) {
+      ItemBinding binding = new ItemBinding(target, targetPath, this, sourcePath);
+      parameterBindingList.Add(binding);
+      binding.Bind();
+    }
+
+    protected virtual void AddTargetBinding(string targetPath, IDeepCloneable source, string sourcePath) {
+      ItemBinding binding = new ItemBinding(this, targetPath, source, sourcePath);
+      parameterBindingList.Add(binding);
+      binding.Bind();
+    }
+
     [StorableHook(HookType.AfterDeserialization)]
     private void AfterDeserialization() {
@@ -110,5 +128,5 @@
       #region Remove this code when going to 3.4
       if (parameterBindingList == null)
-        parameterBindingList = new List<IParameterBinding>();
+        parameterBindingList = new List<IItemBinding>();
       #endregion
     }
Index: /branches/ParameterBinding/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Parameters/3.3/HeuristicLab.Parameters-3.3.csproj	(revision 4786)
+++ /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: anches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterNameBinding.cs
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterNameBinding.cs	(revision 4786)
+++ 	(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: anches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterSecondLevelNameBinding.cs
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterSecondLevelNameBinding.cs	(revision 4786)
+++ 	(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: anches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterValueBinding.cs
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Parameters/3.3/ParameterValueBinding.cs	(revision 4786)
+++ 	(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();
-    }
-  }
-}
Index: /branches/ParameterBinding/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs
===================================================================
--- /branches/ParameterBinding/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 4786)
+++ /branches/ParameterBinding/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 4787)
@@ -178,4 +178,12 @@
       InitializeOperators();
       AttachEventHandlers();
+
+      AddBinding("BestTSPSolutionAnalyzer.QualityParameter.ActualName", "Evaluator.QualityParameter.ActualName");
+      AddBinding("BestTSPSolutionAnalyzer.CoordinatesParameter.ActualName", "CoordinatesParameter.Name");
+      AddBinding("BestTSPSolutionAnalyzer.PermutationParameter.ActualName", "SolutionCreator.PermutationParameter.ActualName");
+      AddBinding("BestTSPSolutionAnalyzer.BestKnownQualityParameter.ActualName", "BestKnownQualityParameter.Name");
+      AddBinding("BestTSPSolutionAnalyzer.BestKnownSolutionParameter.ActualName", "BestKnownSolutionParameter.Name");
+      AddBinding("BestTSPSolutionAnalyzer.MaximizationParameter.ActualName", "MaximizationParameter.Name");
+      BestTSPSolutionAnalyzer.ResultsParameter.ActualName = "Results";
     }
 
@@ -320,42 +328,5 @@
     }
     private void ParameterizeAnalyzers() {
-      if (BestTSPSolutionAnalyzer != null) {
-        #region Using First Level Bindings
-        BestTSPSolutionAnalyzer.ParameterBindingList.Add(new ParameterNameBinding(
-          BestTSPSolutionAnalyzer.QualityParameter,
-          Evaluator.QualityParameter
-          ));
-        BestTSPSolutionAnalyzer.ParameterBindingList.Add(new ParameterNameBinding(
-          BestTSPSolutionAnalyzer.CoordinatesParameter,
-          CoordinatesParameter
-          ));
-        BestTSPSolutionAnalyzer.ParameterBindingList.Add(new ParameterNameBinding(
-          BestTSPSolutionAnalyzer.PermutationParameter,
-          SolutionCreator.PermutationParameter
-          ));
-        BestTSPSolutionAnalyzer.ParameterBindingList.Add(new ParameterNameBinding(
-          BestTSPSolutionAnalyzer.BestKnownQualityParameter,
-          BestKnownQualityParameter
-          ));
-        BestTSPSolutionAnalyzer.ParameterBindingList.Add(new ParameterNameBinding(
-          BestTSPSolutionAnalyzer.BestKnownSolutionParameter,
-          BestKnownSolutionParameter
-          ));
-        BestTSPSolutionAnalyzer.ParameterBindingList.Add(new ParameterNameBinding(
-          BestTSPSolutionAnalyzer.MaximizationParameter,
-          MaximizationParameter
-          ));
-        #endregion
-        #region Using Second Level Bindings
-        BestTSPSolutionAnalyzer.ParameterBindingList.Add(new ParameterSecondLevelNameBinding(
-          BestTSPSolutionAnalyzer.QualityParameter,
-          EvaluatorParameter, "QualityParameter"
-          ));
-        BestTSPSolutionAnalyzer.ParameterBindingList.Add(new ParameterSecondLevelNameBinding(
-           BestTSPSolutionAnalyzer.PermutationParameter,
-           SolutionCreatorParameter, "PermutationParameter"
-           ));
-        #endregion
-        #region Old
+      /*if (BestTSPSolutionAnalyzer != null) {
         BestTSPSolutionAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
         BestTSPSolutionAnalyzer.CoordinatesParameter.ActualName = CoordinatesParameter.Name;
@@ -365,6 +336,5 @@
         BestTSPSolutionAnalyzer.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name;
         BestTSPSolutionAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;
-        #endregion
-      }
+      }*/
 
       if (TSPAlleleFrequencyAnalyzer != null) {
