Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/AtomicOperation.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/AtomicOperation.cs	(revision 1992)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/AtomicOperation.cs	(revision 1994)
@@ -37,5 +37,12 @@
       get { return myOperator; }
     }
-    private IScope myScope;  
+    private IEnvironment myEnvironment;
+    /// <summary>
+    /// Gets the current environment as <see cref="IEnvironment"/>.
+    /// </summary>
+    public IEnvironment Environment {
+      get { return myEnvironment; }
+    }
+    private IScope myScope;
     /// <summary>
     /// Gets the current scope as <see cref="IScope"/>.
@@ -54,7 +61,9 @@
     /// </summary>
     /// <param name="op">The operator to assign.</param>
+    /// <param name="environment">The environment to assign.</param>
     /// <param name="scope">The scope to assign.</param>
-    public AtomicOperation(IOperator op, IScope scope) {
+    public AtomicOperation(IOperator op, IEnvironment environment, IScope scope) {
       myOperator = op;
+      myEnvironment = environment;
       myScope = scope;
     }
@@ -71,4 +80,5 @@
       clonedObjects.Add(Guid, clone);
       clone.myOperator = (IOperator)Auxiliary.Clone(Operator, clonedObjects);
+      clone.myEnvironment = (IEnvironment)Auxiliary.Clone(Environment, clonedObjects);
       clone.myScope = (IScope)Auxiliary.Clone(Scope, clonedObjects);
       return clone;
@@ -83,4 +93,5 @@
     /// class <see cref="ItemBase"/>. <br/>
     /// The operator is saved as child node having the tag name <c>Operator</c>.<br/>
+    /// The environment is also saved as a child node having the tag name <c>Environment</c>.<br/>
     /// The scope is also saved as a child node having the tag name <c>Scope</c>.</remarks>
     /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
@@ -91,4 +102,5 @@
       XmlNode node = base.GetXmlNode(name, document, persistedObjects);
       node.AppendChild(PersistenceManager.Persist("Operator", Operator, document, persistedObjects));
+      node.AppendChild(PersistenceManager.Persist("Environment", Environment, document, persistedObjects));
       node.AppendChild(PersistenceManager.Persist("Scope", Scope, document, persistedObjects));
       return node;
@@ -99,5 +111,6 @@
     /// <remarks>Calls <see cref="HeuristicLab.Core.StorableBase.Populate"/> of base class 
     /// <see cref="ItemBase"/>.<br/>
-    /// The operator must be saved as a child node with the tag name <c>Operator</c>, also the scope must 
+    /// The operator must be saved as a child node with the tag name <c>Operator</c>, the environment must be saved as
+    /// a child node with the tag name <c>Environment</c>, and also the scope must 
     /// be saved as a child node having the tag name <c>Scope</c> (see <see cref="GetXmlNode"/>).</remarks>
     /// <param name="node">The <see cref="XmlNode"/> where the operation is saved.</param>
@@ -106,4 +119,5 @@
       base.Populate(node, restoredObjects);
       myOperator = (IOperator)PersistenceManager.Restore(node.SelectSingleNode("Operator"), restoredObjects);
+      myEnvironment = (IEnvironment)PersistenceManager.Restore(node.SelectSingleNode("Environment"), restoredObjects);
       myScope = (IScope)PersistenceManager.Restore(node.SelectSingleNode("Scope"), restoredObjects);
     }
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Environment.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Environment.cs	(revision 1994)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Environment.cs	(revision 1994)
@@ -0,0 +1,89 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using System.Xml;
+
+namespace HeuristicLab.Core {
+  public class Environment : ItemBase, IEnvironment {
+    private Environment parent;
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="Environment"/>.
+    /// </summary>
+    public Environment() { }
+    /// <summary>
+    /// Initializes a new instance of <see cref="Environment"/> with the given <paramref name="parent"/>.
+    /// </summary>
+    /// <param name="parnet">The parent environment.</param>
+    public Environment(Environment parent) {
+      this.parent = parent;
+    }
+
+    /// <summary>
+    /// Clones the current instance.
+    /// </summary>
+    /// <remarks>The parent environment is cloned with the 
+    /// <see cref="HeuristicLab.Core.Auxiliary.Clone"/> method of the <see cref="Auxiliary"/> class.</remarks>
+    /// <param name="clonedObjects">All already cloned objects. (Needed to avoid cycles.)</param>
+    /// <returns>The cloned object as <see cref="AtomicOperation"/>.</returns>
+    public override object Clone(IDictionary<Guid, object> clonedObjects) {
+      Environment clone = new Environment();
+      clonedObjects.Add(Guid, clone);
+      clone.parent = (Environment)Auxiliary.Clone(parent, clonedObjects);
+      return clone;
+    }
+
+    #region Persistence Methods
+
+    /// <summary>
+    ///  Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="HeuristicLab.Core.StorableBase.GetXmlNode"/> of base 
+    /// class <see cref="ItemBase"/>. <br/>
+    /// The parent environment is saved as child node having the tag name <c>ParentEnvironment</c>.</remarks>
+    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
+    /// <param name="document">The <see cref="XmlDocument"/> where to save the data.</param>
+    /// <param name="persistedObjects">The dictionary of all already persisted objects. (Needed to avoid cycles.)</param>
+    /// <returns>The saved <see cref="XmlNode"/>.</returns>
+    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
+      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
+      node.AppendChild(PersistenceManager.Persist("ParentEnvironment", parent, document, persistedObjects));
+      return node;
+    }
+    /// <summary>
+    /// Loads the persisted operation from the specified <paramref name="node"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="HeuristicLab.Core.StorableBase.Populate"/> of base class 
+    /// <see cref="ItemBase"/>.<br/>
+    /// The parent environment must be saved as a child node with the tag name <c>ParentEnvironment</c>
+    /// (see <see cref="GetXmlNode"/>).</remarks>
+    /// <param name="node">The <see cref="XmlNode"/> where the operation is saved.</param>
+    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
+    public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
+      base.Populate(node, restoredObjects);
+      parent = (Environment)PersistenceManager.Restore(node.SelectSingleNode("ParentEnvironment"), restoredObjects);
+    }
+    #endregion
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/HeuristicLab.Core-3.2.csproj
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/HeuristicLab.Core-3.2.csproj	(revision 1992)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/HeuristicLab.Core-3.2.csproj	(revision 1994)
@@ -126,4 +126,9 @@
     </Compile>
     <Compile Include="AliasEventArgs.cs" />
+    <Compile Include="Environment.cs" />
+    <Compile Include="ParameterEventArgs.cs" />
+    <Compile Include="ParameterType.cs" />
+    <Compile Include="Interfaces\IParameter.cs" />
+    <Compile Include="Interfaces\IEnvironment.cs" />
     <Compile Include="KeyValueEventArgs.cs" />
     <Compile Include="OperatorBaseDescriptionView.cs">
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IEnvironment.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IEnvironment.cs	(revision 1994)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IEnvironment.cs	(revision 1994)
@@ -0,0 +1,30 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+namespace HeuristicLab.Core {
+  public interface IEnvironment : IItem {
+    string TranslateName(string name);
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IItem.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IItem.cs	(revision 1992)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IItem.cs	(revision 1994)
@@ -29,13 +29,4 @@
   /// </summary>
   public interface IItem : IStorable, IViewable {
-    /// <summary>
-    /// Fires a new <c>Changed</c> event.
-    /// </summary>
-    void FireChanged();
-
-    /// <summary>
-    /// Occurs when the current instance has changed.
-    /// </summary>
-    event EventHandler Changed;
   }
 }
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IOperator.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IOperator.cs	(revision 1992)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IOperator.cs	(revision 1994)
@@ -29,5 +29,5 @@
   /// a basic instruction of an algorithm.
   /// </summary>
-  public interface IOperator : IConstrainedItem {
+  public interface IOperator : IItem {
     /// <summary>
     /// Gets or sets the name of the current instance.
@@ -49,85 +49,7 @@
 
     /// <summary>
-    /// Gets a list of all sub operators.
-    /// </summary>
-    IList<IOperator> SubOperators { get; }
-    /// <summary>
     /// Gets a collection of all variable (parameter) infos.
     /// </summary>
-    ICollection<IVariableInfo> VariableInfos { get; }
-    /// <summary>
-    /// Gets a collection of all variables of the current operator.
-    /// </summary>
-    ICollection<IVariable> Variables { get; }
-
-    /// <summary>
-    /// Adds the given sub operator to the current instance.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    void AddSubOperator(IOperator op);
-    /// <summary>
-    /// Adds the given sub operator to the current instance if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    /// <returns><c>true</c> if the operator could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddSubOperator(IOperator op);
-    /// <summary>
-    /// Adds the given sub operator to the current instance if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the operator could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddSubOperator(IOperator op, out ICollection<IConstraint> violatedConstraints);
-    /// <summary>
-    /// Adds the given sub operator at a the specified <paramref name="index"/>.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    /// <param name="index">The position where to add the operator.</param>
-    void AddSubOperator(IOperator op, int index);
-    /// <summary>
-    /// Adds the given operator at the specified <paramref name="index"/> to the current instance 
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    /// <param name="index">The position where to add the operator.</param>
-    /// <returns><c>true</c> if the operator could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddSubOperator(IOperator op, int index);
-    /// <summary>
-    /// Adds the given operator at the specified <paramref name="index"/> to the current instance 
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="op">The operator to add.</param>
-    /// <param name="index">The position where to add the operator.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the operator could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddSubOperator(IOperator op, int index, out ICollection<IConstraint> violatedConstraints);
-    /// <summary>
-    /// Removes a sub operator at the specified <paramref name="index"/>.
-    /// </summary>
-    /// <param name="index">The position where to delete the operator.</param>
-    void RemoveSubOperator(int index);
-    /// <summary>
-    /// Removes a sub operator at the specified <paramref name="index"/> if all constraint can be fulfilled.
-    /// </summary>
-    /// <param name="index">The position where to delete the operator.</param>
-    /// <returns><c>true</c> if the operator could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveSubOperator(int index);
-    /// <summary>
-    /// Deletes the operator at the specified <paramref name="index"/>  
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="index">The position where to delete the operator.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the operator could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveSubOperator(int index, out ICollection<IConstraint> violatedConstraints);
+    ICollection<IParameter> Parameters { get; }
 
     /// <summary>
@@ -136,130 +58,15 @@
     /// <param name="formalName">The formal name of the variable info.</param>
     /// <returns>The variable info with the specified formal name.</returns>
-    IVariableInfo GetVariableInfo(string formalName);
+    IParameter GetParameter(string name);
     /// <summary>
     /// Adds the specified variable info to the current instance.
     /// </summary>
     /// <param name="variableInfo">The variable info to add.</param>
-    void AddVariableInfo(IVariableInfo variableInfo);
-    /// <summary>
-    /// Adds the specified variable info to the current instance, if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="variableInfo">The variable info to add.</param>
-    /// <returns><c>true</c> if the variable info could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddVariableInfo(IVariableInfo variableInfo);
-    /// <summary>
-    /// Adds the specified variable info to the current instance, if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="variableInfo">The variable info to add.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the variable info could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddVariableInfo(IVariableInfo variableInfo, out ICollection<IConstraint> violatedConstraints);
+    void AddParameter(IParameter parameter);
     /// <summary>
     /// Removes the variable info with the given formal name.
     /// </summary>
     /// <param name="formalName">The formal name of the variable info to remove.</param>
-    void RemoveVariableInfo(string formalName);
-    /// <summary>
-    /// Deletes the variable info with the given formal name, 
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="formalName">The formal name of the variable info to remove.</param>
-    /// <returns><c>true</c> if the variable info could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveVariableInfo(string formalName);
-    /// <summary>
-    /// Deletes the variable info with the given formal name, 
-    /// if all constraints can be fulfilled.
-    /// </summary>
-    /// <param name="formalName">The formal name of the variable info to remove.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could not be
-    /// fulfilled.</param>
-    /// <returns><c>true</c> if the variable info could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveVariableInfo(string formalName, out ICollection<IConstraint> violatedConstraints);
-
-    /// <summary>
-    /// Gets a variable with the given <paramref name="name"/>.
-    /// </summary>
-    /// <param name="name">The name of the variable.</param>
-    /// <returns>The variable with the specified name.</returns>
-    IVariable GetVariable(string name);
-    /// <summary>
-    /// Adds the specified <paramref name="variable"/> to the current instance.
-    /// </summary>
-    /// <param name="variable">The variable to add.</param>
-    void AddVariable(IVariable variable);
-    /// <summary>
-    /// Adds the specified <paramref name="variable"/> to the current instance if all constraints can
-    /// be fulfilled.
-    /// </summary>
-    /// <param name="variable">The variable to add.</param>
-    /// <returns><c>true</c> if the variable could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddVariable(IVariable variable);
-    /// <summary>
-    /// Adds the specified <paramref name="variable"/> to the current instance if all constraints can
-    /// be fulfilled.
-    /// </summary>
-    /// <param name="variable">The variable to add.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could 
-    /// not be fulfillled.</param>
-    /// <returns><c>true</c> if the variable could be added without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryAddVariable(IVariable variable, out ICollection<IConstraint> violatedConstraints);
-    /// <summary>
-    /// Deletes the variable with the specified <paramref name="name"/>.
-    /// </summary>
-    /// <param name="name">The name of the variable to delete.</param>
-    void RemoveVariable(string name);
-    /// <summary>
-    /// Deletes the variable with the specified <paramref name="name"/> if all constraints can be 
-    /// fulfilled.
-    /// </summary>
-    /// <param name="name">The name of the variable to remove.</param>
-    /// <returns><c>true</c> if the variable could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveVariable(string name);
-    /// <summary>
-    /// Deletes the variable with the specified <paramref name="name"/> if all constraints can be 
-    /// fulfilled.
-    /// </summary>
-    /// <param name="name">The name of the variable to remove.</param>
-    /// <param name="violatedConstraints">Output parameter; contains all constraints that could 
-    /// not be fulfilled.</param>
-    /// <returns><c>true</c> if the variable could be deleted without violating constraints,
-    /// <c>false</c> otherwise.</returns>
-    bool TryRemoveVariable(string name, out ICollection<IConstraint> violatedConstraints);
-    
-    /// <inheritdoc cref="GetVariableValue(string, HeuristicLab.Core.IScope, bool)"/>
-    /// <typeparam name="T">The type of the value that is searched.</typeparam>       
-    T GetVariableValue<T>(string formalName, IScope scope, bool recursiveLookup) where T : class, IItem;
-    /// <inheritdoc cref="GetVariableValue(string, HeuristicLab.Core.IScope, bool, bool)"/>
-    /// <typeparam name="T">The type of the value that is searched.</typeparam>
-    T GetVariableValue<T>(string formalName, IScope scope, bool recursiveLookup, bool throwOnError) where T : class, IItem;
-    /// <inheritdoc cref="GetVariableValue(System.String, IScope, bool, bool)" 
-    /// select="summary"/>
-    /// <param name="formalName">The formal name of the variable info whose variable value is searched.</param>
-    /// <param name="scope">The scope where to look for the variable.</param>
-    /// <param name="recursiveLookup">Boolean value, whether also the parent scopes shall be searched if
-    /// the variable is not found in the specified <paramref name="scope"/>.</param>
-    /// <returns>The value of the searched variable or null if it is not found.</returns>
-    IItem GetVariableValue(string formalName, IScope scope, bool recursiveLookup);
-    /// <summary>
-    /// Gets the value of the variable in the specified <paramref name="scope"/>
-    /// whose variable(parameter) info has the specified <paramref name="formalName"/>.
-    /// </summary>
-    /// <param name="formalName">The formal name of the variable info whose variable value is searched.</param>
-    /// <param name="scope">The scope where to look for the variable.</param>
-    /// <param name="recursiveLookup">Boolean value, whether also the parent scopes shall be searched if
-    /// the variable is not found in the specified <paramref name="scope"/>.</param>
-    /// <param name="throwOnError">Boolean value, whether an exception shall be thrown, if the variable 
-    /// cannot be found or just <c>null</c> shall be returned.</param>
-    /// <returns>The value of the searched variable (or null if the variable is not 
-    /// found and <paramref name="throwOnError"/> is set to false).</returns>
-    IItem GetVariableValue(string formalName, IScope scope, bool recursiveLookup, bool throwOnError);
+    void RemoveParameter(string name);
 
     /// <summary>
@@ -268,5 +75,5 @@
     /// <param name="scope">The scope where to execute the current instance.</param>
     /// <returns>The next operation.</returns>
-    IOperation Execute(IScope scope);
+    IOperation Execute(IEnvironment environment, IScope scope);
     /// <summary>
     /// Aborts the current operator.
@@ -283,27 +90,11 @@
     event EventHandler BreakpointChanged; 
     /// <summary>
-    /// Occurs when a sub operator has been added.
-    /// </summary>
-    event EventHandler<OperatorIndexEventArgs> SubOperatorAdded;
-    /// <summary>
-    /// Occurs when a sub operator has been deleted.
-    /// </summary>
-    event EventHandler<OperatorIndexEventArgs> SubOperatorRemoved;
-    /// <summary>
     /// Occurs when a variable info has been added.
     /// </summary>
-    event EventHandler<VariableInfoEventArgs> VariableInfoAdded;
+    event EventHandler<ParameterEventArgs> ParameterAdded;
     /// <summary>
     /// Occurs when a variable info has been deleted.
     /// </summary>
-    event EventHandler<VariableInfoEventArgs> VariableInfoRemoved;
-    /// <summary>
-    /// Occurs when a variable has been added.
-    /// </summary>
-    event EventHandler<VariableEventArgs> VariableAdded;
-    /// <summary>
-    /// Occurs when a variable has been deleted.
-    /// </summary>
-    event EventHandler<VariableEventArgs> VariableRemoved;
+    event EventHandler<ParameterEventArgs> ParameterRemoved;
     /// <summary>
     /// Occurs when the current instance is executed.
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IParameter.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IParameter.cs	(revision 1994)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IParameter.cs	(revision 1994)
@@ -0,0 +1,49 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+using System.Xml;
+
+namespace HeuristicLab.Core {
+  /// <summary>
+  /// Interface to store meta-information about parameters of operators.
+  /// </summary>
+  public interface IParameter : IItem {
+    /// <summary>
+    /// Gets or sets the name of the current instance.
+    /// </summary>
+    string Name { get; }
+    /// <summary>
+    /// Gets the description of the current instance.
+    /// </summary>
+    string Description { get; }
+    /// <summary>
+    /// Gets the data type of the current instance.
+    /// </summary>
+    Type DataType { get; }
+    /// <summary>
+    /// Gets the type of the parameter (in, out, both).
+    /// </summary>
+    ParameterType Type { get; }
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IScope.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IScope.cs	(revision 1992)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IScope.cs	(revision 1994)
@@ -39,8 +39,4 @@
     /// </summary>
     ICollection<IVariable> Variables { get; }
-    /// <summary>
-    /// Gets all aliases of the current scope.
-    /// </summary>
-    IEnumerable<KeyValuePair<string, string>> Aliases { get; }
     /// <summary>
     /// Gets all subscopes in the current scope.
@@ -96,22 +92,4 @@
 
     /// <summary>
-    /// Gets the actual name of the given alias.
-    /// </summary>
-    /// <param name="name">The alias whose actual name is searched.</param>
-    /// <returns>The actual name.</returns>
-    string TranslateName(string name);
-    /// <summary>
-    /// Adds an alias to the current instance. 
-    /// </summary>
-    /// <param name="alias">The alias to add.</param>
-    /// <param name="name">The actual name of the alias.</param>
-    void AddAlias(string alias, string name);
-    /// <summary>
-    /// Deletes the specified <paramref name="alias"/> from the current instance.
-    /// </summary>
-    /// <param name="alias">The alias to delete.</param>
-    void RemoveAlias(string alias);
-
-    /// <summary>
     /// Adds the specified sub scope to the current instance.
     /// </summary>
@@ -155,12 +133,4 @@
     event EventHandler<VariableEventArgs> VariableRemoved;
     /// <summary>
-    /// Occurs when an alias has been added to the current instance.
-    /// </summary>
-    event EventHandler<AliasEventArgs> AliasAdded;
-    /// <summary>
-    /// Occurs when an alias has been removed from the current instance.
-    /// </summary>
-    event EventHandler<AliasEventArgs> AliasRemoved;
-    /// <summary>
     /// Occurs when a sub scope has been added to the current instance.
     /// </summary>
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IViewable.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IViewable.cs	(revision 1992)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/Interfaces/IViewable.cs	(revision 1994)
@@ -30,4 +30,13 @@
   public interface IViewable {
     /// <summary>
+    /// Fires a new <c>Changed</c> event.
+    /// </summary>
+    void FireChanged();
+    /// <summary>
+    /// Occurs when the current instance has changed.
+    /// </summary>
+    event EventHandler Changed;
+
+    /// <summary>
     /// Creates a view to display the current instance.
     /// </summary>
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/ParameterEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/ParameterEventArgs.cs	(revision 1994)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/ParameterEventArgs.cs	(revision 1994)
@@ -0,0 +1,50 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+namespace HeuristicLab.Core {
+  /// <summary>
+  /// Event arguments to be able to specify the affected variable info.
+  /// </summary>
+  public class ParameterEventArgs : ItemEventArgs {
+    /// <summary>
+    /// Gets the affected parameter.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ItemEventArgs.Item"/> of base class <see cref="ItemEventArgs"/>.
+    /// No own data storage present.</remarks>
+    public IParameter Parameter {
+      get { return (IParameter)Item; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="ParameterEventArgs"/> with the specified 
+    /// <paramref name="parameter"/>.
+    /// </summary>
+    /// <remarks>Calls constructor of base class <see cref="ItemEventArgs"/>.</remarks>
+    /// <param name="parameter">The affected parameter.</param>
+    public ParameterEventArgs(IParameter parameter)
+      : base(parameter) {
+    }
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/ParameterType.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/ParameterType.cs	(revision 1994)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.2/ParameterType.cs	(revision 1994)
@@ -0,0 +1,44 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Text;
+
+namespace HeuristicLab.Core {
+  /// <summary>
+  /// Represents the type of a parameter (input, output, both).
+  /// </summary>
+  public enum ParameterType {
+    /// <summary>
+    /// Input parameter.
+    /// </summary>
+    In,
+    /// <summary>
+    /// Output parameter.
+    /// </summary>
+    Out,
+    /// <summary>
+    /// Input and output parameter.
+    /// </summary>
+    InOut
+  }
+}
