Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ConstrainedValueParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ConstrainedValueParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ConstrainedValueParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/FixedValueParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/FixedValueParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/FixedValueParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/LookupParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/LookupParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/LookupParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -50,6 +50,6 @@
     public string TranslatedName {
       get {
-        string translatedName;
-        GetValueParameterAndTranslateName(out translatedName);
+        string translatedName = Name;
+        GetValueParameterAndTranslateName(ExecutionContext, ref translatedName);
         return translatedName;
       }
@@ -61,6 +61,7 @@
 
     private Lazy<ThreadLocal<IItem>> cachedActualValues;
-    private IItem CachedActualValue {
+    protected IItem CachedActualValue {
       get { return cachedActualValues.Value.Value; }
+      set { cachedActualValues.Value.Value = value; }
     }
 
@@ -128,18 +129,22 @@
     }
 
-    private IValueParameter GetValueParameterAndTranslateName(out string actualName) {
+    protected static IValueParameter GetValueParameterAndTranslateName(IExecutionContext executionContext, ref string translatedName) {
       IValueParameter valueParam;
       ILookupParameter lookupParam;
-      IExecutionContext currentExecutionContext = ExecutionContext;
-
-      actualName = Name;
+      IExecutionContext currentExecutionContext = executionContext;
+
       while (currentExecutionContext != null) {
-        valueParam = currentExecutionContext.Parameters[actualName] as IValueParameter;
-        lookupParam = currentExecutionContext.Parameters[actualName] as ILookupParameter;
+        IParameter param = null;
+        while (currentExecutionContext != null && !currentExecutionContext.Parameters.TryGetValue(translatedName, out param))
+          currentExecutionContext = currentExecutionContext.Parent;
+        if (currentExecutionContext == null) break;
+
+        valueParam = param as IValueParameter;
+        lookupParam = param as ILookupParameter;
 
         if ((valueParam == null) && (lookupParam == null))
           throw new InvalidOperationException(
             string.Format("Parameter look-up chain broken. Parameter \"{0}\" is not an \"{1}\" or an \"{2}\".",
-                          actualName, typeof(IValueParameter).GetPrettyName(), typeof(ILookupParameter).GetPrettyName())
+                          translatedName, typeof(IValueParameter).GetPrettyName(), typeof(ILookupParameter).GetPrettyName())
           );
 
@@ -148,39 +153,42 @@
           else if (lookupParam == null) return valueParam;
         }
-        if (lookupParam != null) actualName = lookupParam.ActualName;
+        translatedName = lookupParam.ActualName;
 
         currentExecutionContext = currentExecutionContext.Parent;
-        while ((currentExecutionContext != null) && !currentExecutionContext.Parameters.ContainsKey(actualName))
-          currentExecutionContext = currentExecutionContext.Parent;
       }
       return null;
     }
-    private IVariable LookupVariable(string name) {
-      IScope scope = ExecutionContext.Scope;
-      while ((scope != null) && !scope.Variables.ContainsKey(name))
+    protected static IVariable LookupVariable(IScope scope, string name) {
+      IVariable variable = null;
+      while (scope != null && !scope.Variables.TryGetValue(name, out variable))
         scope = scope.Parent;
-      return scope != null ? scope.Variables[name] : null;
-    }
+      return scope != null ? variable : null;
+    }
+
     protected override IItem GetActualValue() {
       if (CachedActualValue != null) return CachedActualValue;
-      string name;
+
+      string translatedName = Name;
+      var value = GetValue(ExecutionContext, ref translatedName);
+      if (value != null && !(value is T))
+        throw new InvalidOperationException(
+          string.Format("Type mismatch. Variable \"{0}\" does not contain a \"{1}\".",
+                        translatedName,
+                        typeof(T).GetPrettyName())
+        );
+      CachedActualValue = value;
+      return value;
+    }
+
+    protected static IItem GetValue(IExecutionContext executionContext, ref string name) {
       // try to get value from context stack
-      IValueParameter param = GetValueParameterAndTranslateName(out name);
+      IValueParameter param = GetValueParameterAndTranslateName(executionContext, ref name);
       if (param != null) return param.Value;
 
       // try to get variable from scope
-      IVariable var = LookupVariable(name);
-      if (var != null) {
-        if (!(var.Value is T))
-          throw new InvalidOperationException(
-            string.Format("Type mismatch. Variable \"{0}\" does not contain a \"{1}\".",
-                          name,
-                          typeof(T).GetPrettyName())
-          );
-        cachedActualValues.Value.Value = var.Value;
-        return var.Value;
-      }
-      return null;
-    }
+      IVariable var = LookupVariable(executionContext.Scope, name);
+      return var != null ? var.Value : null;
+    }
+
     protected override void SetActualValue(IItem value) {
       if (!(value is T))
@@ -189,9 +197,13 @@
                         typeof(T).GetPrettyName())
         );
-      cachedActualValues.Value.Value = value;
-
+      CachedActualValue = value;
+
+      string translatedName = Name;
+      SetValue(ExecutionContext, ref translatedName, value);
+    }
+
+    protected static void SetValue(IExecutionContext executionContext, ref string name, IItem value) {
       // try to set value in context stack
-      string name;
-      IValueParameter param = GetValueParameterAndTranslateName(out name);
+      IValueParameter param = GetValueParameterAndTranslateName(executionContext, ref name);
       if (param != null) {
         param.Value = value;
@@ -200,5 +212,5 @@
 
       // try to set value in scope
-      IVariable var = LookupVariable(name);
+      IVariable var = LookupVariable(executionContext.Scope, name);
       if (var != null) {
         var.Value = value;
@@ -207,5 +219,5 @@
 
       // create new variable
-      ExecutionContext.Scope.Variables.Add(new Variable(name, value));
+      executionContext.Scope.Variables.Add(new Variable(name, value));
     }
 
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/OperatorParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/OperatorParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/OperatorParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/Parameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/Parameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/Parameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/Plugin.cs.frame
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/Plugin.cs.frame	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/Plugin.cs.frame	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -26,5 +26,5 @@
   /// Plugin class for HeuristicLab.Parameters plugin.
   /// </summary>
-  [Plugin("HeuristicLab.Parameters", "3.3.13.$WCREV$")]
+  [Plugin("HeuristicLab.Parameters", "3.3.15.$WCREV$")]
   [PluginFile("HeuristicLab.Parameters-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Collections", "3.3")]
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/Properties/AssemblyInfo.cs.frame
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/Properties/AssemblyInfo.cs.frame	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/Properties/AssemblyInfo.cs.frame	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -32,5 +32,5 @@
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("HeuristicLab")]
-[assembly: AssemblyCopyright("(c) 2002-2015 HEAL")]
+[assembly: AssemblyCopyright("(c) 2002-2018 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
@@ -54,3 +54,3 @@
 // by using the '*' as shown below:
 [assembly: AssemblyVersion("3.3.0.0")]
-[assembly: AssemblyFileVersion("3.3.13.$WCREV$")]
+[assembly: AssemblyFileVersion("3.3.15.$WCREV$")]
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ScopeParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ScopeParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ScopeParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ScopeTreeLookupParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ScopeTreeLookupParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ScopeTreeLookupParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ValueParameter.cs
===================================================================
--- branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ValueParameter.cs	(revision 15651)
+++ branches/2522_RefactorPluginInfrastructure/HeuristicLab.Parameters/3.3/ValueParameter.cs	(revision 15973)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
