Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/AliasEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/AliasEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#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 alias. 
-  /// </summary>
-  public class AliasEventArgs : EventArgs {
-    private string myAlias;
-    /// <summary>
-    /// Gets the affected alias.
-    /// </summary>
-    public string Alias {
-      get { return myAlias; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="AliasEventArgs"/> with the given <paramref name="alias"/>.
-    /// </summary>
-    /// <param name="alias">The affected alias.</param>
-    public AliasEventArgs(string alias) {
-      myAlias = alias;
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraph.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraph.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraph.cs	(revision 2046)
@@ -23,7 +23,113 @@
 using System.Collections.Generic;
 using System.Text;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Core {
-  public class CallGraph : ItemBase, ICallGraph {
+  public class CallGraph : CallNodeBase, ICallGraph {
+    [Storable]
+    private Dictionary<ICallNode, List<ICallNode>> transitions;
+
+    [Storable]
+    private List<ICallNode> myCallNodes;
+    public ICollection<ICallNode> CallNodes {
+      get { return myCallNodes.AsReadOnly(); }
+    }
+    [Storable]
+    private ICallNode myInitialCallNode;
+    public ICallNode InitialCallNode {
+      get { return myInitialCallNode; }
+      internal set {
+        if (myInitialCallNode != value) {
+          myInitialCallNode = value;
+          OnInitialCallNodeChanged();
+        }
+      }
+    }
+
+    public CallGraph()
+      : base() {
+      transitions = new Dictionary<ICallNode, List<ICallNode>>();
+      myCallNodes = new List<ICallNode>();
+      myInitialCallNode = null;
+    }
+    public CallGraph(CallGraph parentGraph)
+      : base(parentGraph) {
+      transitions = new Dictionary<ICallNode, List<ICallNode>>();
+      myCallNodes = new List<ICallNode>();
+      myInitialCallNode = null;
+    }
+
+    public override ICloneable Clone(ICloner cloner) {
+      CallGraph clone = (CallGraph)base.Clone(cloner);
+      foreach (ICallNode callNode in CallNodes)
+        clone.AddCallNode((ICallNode)cloner.Clone(callNode));
+      foreach (ICallNode source in CallNodes)
+        foreach (ICallNode target in transitions[source])
+          clone.AddTransition((ICallNode)cloner.Clone(source), (ICallNode)cloner.Clone(target));
+      clone.InitialCallNode = (ICallNode)cloner.Clone(InitialCallNode);
+
+      return base.Clone(cloner);
+    }
+
+    public override IView CreateView() {
+      return new CallGraphView(this);
+    }
+
+    internal void AddCallNode(ICallNode callNode) {
+      myCallNodes.Add(callNode);
+      transitions.Add(callNode, new List<ICallNode>());
+      OnCallNodeAdded(callNode);
+    }
+    public void RemoveCallNode(ICallNode callNode) {
+      if (myCallNodes.Remove(callNode)) {
+        foreach (ICallNode node in CallNodes) {  // remove incoming transitions
+          while (transitions[node].Contains(callNode))
+            RemoveTransition(node, callNode);
+        }
+        while (transitions[callNode].Count > 0)  // remove outgoing transitions
+          RemoveTransition(callNode, transitions[callNode][0]);
+        transitions.Remove(callNode);
+        OnCallNodeRemoved(callNode);
+      }
+    }
+
+    public void AddTransition(ICallNode source, ICallNode target) {
+      transitions[source].Add(target);
+      OnTransitionAdded(source, target);
+    }
+    public void RemoveTransition(ICallNode source, ICallNode target) {
+      if (transitions[source].Remove(target))
+        OnTransitionRemoved(source, target);
+    }
+
+    internal IList<ICallNode> GetSuccessorNodes(ICallNode callNode) {
+      return transitions[callNode].AsReadOnly();
+    }
+
+    public event EventHandler<EventArgs<ICallNode>> CallNodeAdded;
+    protected virtual void OnCallNodeAdded(ICallNode callNode) {
+      if (CallNodeAdded != null)
+        CallNodeAdded(this, new EventArgs<ICallNode>(callNode));
+    }
+    public event EventHandler<EventArgs<ICallNode>> CallNodeRemoved;
+    protected virtual void OnCallNodeRemoved(ICallNode callNode) {
+      if (CallNodeRemoved != null)
+        CallNodeRemoved(this, new EventArgs<ICallNode>(callNode));
+    }
+    public event EventHandler InitialCallNodeChanged;
+    protected virtual void OnInitialCallNodeChanged() {
+      if (InitialCallNodeChanged != null)
+        InitialCallNodeChanged(this, new EventArgs());
+    }
+    public event EventHandler<EventArgs<ICallNode, ICallNode>> TransistionAdded;
+    protected virtual void OnTransitionAdded(ICallNode source, ICallNode target) {
+      if (TransistionAdded != null)
+        TransistionAdded(this, new EventArgs<ICallNode,ICallNode>(source, target));
+    }
+    public event EventHandler<EventArgs<ICallNode, ICallNode>> TransistionRemoved;
+    protected virtual void OnTransitionRemoved(ICallNode source, ICallNode target) {
+      if (TransistionRemoved != null)
+        TransistionRemoved(this, new EventArgs<ICallNode, ICallNode>(source, target));
+    }
   }
 }
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraphView.Designer.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraphView.Designer.cs	(revision 2046)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraphView.Designer.cs	(revision 2046)
@@ -0,0 +1,62 @@
+#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
+
+namespace HeuristicLab.Core {
+  partial class CallGraphView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.SuspendLayout();
+      // 
+      // CallGraphView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "CallGraphView";
+      this.Size = new System.Drawing.Size(269, 209);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraphView.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraphView.cs	(revision 2046)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraphView.cs	(revision 2046)
@@ -0,0 +1,58 @@
+#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.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Core {
+  public partial class CallGraphView : ViewBase {
+    public ICallGraph CallGraph {
+      get { return (ICallGraph)Item; }
+      set { base.Item = value; }
+    }
+
+    public CallGraphView() {
+      InitializeComponent();
+      Caption = "CallGraph";
+    }
+    public CallGraphView(ICallGraph callGraph)
+      : this() {
+      CallGraph = callGraph;
+    }
+
+    /// <summary>
+    /// Updates all controls with the latest data of the model.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.UpdateControls"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      Caption = "CallGraph";
+      if (CallGraph == null) {
+      } else {
+      }
+    }
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraphView.resx
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraphView.resx	(revision 2046)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallGraphView.resx	(revision 2046)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallNode.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallNode.cs	(revision 2042)
+++ 	(revision )
@@ -1,29 +1,0 @@
-#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 class CallNode : ItemBase, ICallNode {
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallNodeBase.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallNodeBase.cs	(revision 2046)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CallNodeBase.cs	(revision 2046)
@@ -0,0 +1,103 @@
+#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 HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Core {
+  public abstract class CallNodeBase : ItemBase, ICallNode {
+    [Storable]
+    private CallGraph parentGraph;
+
+    [Storable]
+    private Dictionary<string, string> myNameMappings;
+    public IEnumerable<KeyValuePair<string, string>> NameMappings {
+      get { return myNameMappings; }
+    }
+    public IList<ICallNode> SuccessorNodes {
+      get { return parentGraph != null ? parentGraph.GetSuccessorNodes(this) : null; }
+    }
+    public bool InitialCallNode {
+      get { return parentGraph != null ? parentGraph.InitialCallNode == this : false; }
+      set {
+        if (parentGraph != null)
+          parentGraph.InitialCallNode = this;
+      }
+    }
+
+    protected CallNodeBase()
+      : base() {
+      parentGraph = null;
+      myNameMappings = new Dictionary<string, string>();
+    }
+    protected CallNodeBase(CallGraph parentGraph)
+      : this() {
+      this.parentGraph = parentGraph;
+      parentGraph.AddCallNode(this);
+    }
+
+    public override ICloneable Clone(ICloner cloner) {
+      CallNodeBase clone = (CallNodeBase)base.Clone(cloner);
+      foreach (KeyValuePair<string, string> nameMapping in myNameMappings)
+        clone.AddNameMapping(nameMapping.Key, nameMapping.Value);
+      return clone;
+    }
+
+    public void AddNameMapping(string name, string alias) {
+      RemoveNameMapping(name);
+      myNameMappings.Add(name, alias);
+      OnNameMappingAdded(name, alias);
+    }
+    public void RemoveNameMapping(string name) {
+      if (myNameMappings.ContainsKey(name)) {
+        string alias = myNameMappings[name];
+        myNameMappings.Remove(name);
+        OnNameMappingRemoved(name, alias);
+      }
+    }
+    protected void ClearNameMappings() {
+      string[] names = new string[myNameMappings.Count];
+      myNameMappings.Keys.CopyTo(names, 0);
+      foreach (string name in names)
+        RemoveNameMapping(name);
+    }
+    public string MapName(string name) {
+      string alias = name;
+      myNameMappings.TryGetValue(name, out alias);
+      if (parentGraph != null)
+        alias = parentGraph.MapName(alias);
+      return alias;
+    }
+
+    public event EventHandler<EventArgs<string, string>> NameMappingAdded;
+    protected virtual void OnNameMappingAdded(string name, string alias) {
+      if (NameMappingAdded != null)
+        NameMappingAdded(this, new EventArgs<string, string>(name, alias));
+    }
+    public event EventHandler<EventArgs<string, string>> NameMappingRemoved;
+    protected virtual void OnNameMappingRemoved(string name, string alias) {
+      if (NameMappingRemoved != null)
+        NameMappingRemoved(this, new EventArgs<string, string>(name, alias));
+    }
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CancelEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CancelEventArgs.cs	(revision 2046)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/CancelEventArgs.cs	(revision 2046)
@@ -0,0 +1,58 @@
+#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.ComponentModel;
+
+namespace HeuristicLab.Core {
+  public class CancelEventArgs<T> : CancelEventArgs {
+    private T myValue;
+    public T Value {
+      get { return myValue; }
+    }
+
+    public CancelEventArgs(T value) {
+      myValue = value;
+    }
+    public CancelEventArgs(T value, bool cancel)
+      : base(cancel) {
+      myValue = value;
+    }
+  }
+
+  public class CancelEventArgs<T, U> : CancelEventArgs<T> {
+    private U myValue2;
+    public U Value2 {
+      get { return myValue2; }
+    }
+
+    public CancelEventArgs(T value, U value2)
+      : base(value) {
+      myValue2 = value2;
+    }
+    public CancelEventArgs(T value, U value2, bool cancel)
+      : base(value, cancel) {
+      myValue2 = value2;
+    }
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Cloner.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Cloner.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Cloner.cs	(revision 2046)
@@ -46,4 +46,5 @@
 
     public ICloneable Clone(ICloneable obj) {
+      if (obj == null) return null;
       ICloneable clone;
       if (mapping.TryGetValue(obj, out clone))
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/EngineBase.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/EngineBase.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/EngineBase.cs	(revision 2046)
@@ -237,5 +237,5 @@
     /// Occurs when an operation is executed.
     /// </summary>
-    public event EventHandler<OperationEventArgs> OperationExecuted;
+    public event EventHandler<EventArgs<IOperation>> OperationExecuted;
     /// <summary>
     /// Fires a new <c>OperationExecuted</c> event.
@@ -244,10 +244,10 @@
     protected virtual void OnOperationExecuted(IOperation operation) {
       if (OperationExecuted != null)
-        OperationExecuted(this, new OperationEventArgs(operation));
+        OperationExecuted(this, new EventArgs<IOperation>(operation));
     }
     /// <summary>
     /// Occurs when an exception occured during the execution.
     /// </summary>
-    public event EventHandler<ExceptionEventArgs> ExceptionOccurred;
+    public event EventHandler<EventArgs<Exception>> ExceptionOccurred;
     /// <summary>
     /// Aborts the execution and fires a new <c>ExceptionOccurred</c> event.
@@ -257,5 +257,5 @@
       Abort();
       if (ExceptionOccurred != null)
-        ExceptionOccurred(this, new ExceptionEventArgs(exception));
+        ExceptionOccurred(this, new EventArgs<Exception>(exception));
     }
     /// <summary>
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/EventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/EventArgs.cs	(revision 2046)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/EventArgs.cs	(revision 2046)
@@ -0,0 +1,48 @@
+#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 class EventArgs<T> : EventArgs {
+    private T myValue;
+    public T Value {
+      get { return myValue; }
+    }
+
+    public EventArgs(T value) {
+      myValue = value;
+    }
+  }
+
+  public class EventArgs<T, U> : EventArgs<T> {
+    private U myValue2;
+    public U Value2 {
+      get { return myValue2; }
+    }
+
+    public EventArgs(T value, U value2) : base(value) {
+      myValue2 = value2;
+    }
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ExceptionEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ExceptionEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,48 +1,0 @@
-#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 exception.
-  /// </summary>
-  public class ExceptionEventArgs : EventArgs {
-    private Exception myException;
-    /// <summary>
-    /// Gets the affected exception.
-    /// </summary>
-    public Exception Exception {
-      get { return myException; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ExceptionEventArgs"/> 
-    /// with the given <paramref name="exception"/>.
-    /// </summary>
-    /// <param name="exception">The affected exception.</param>
-    public ExceptionEventArgs(Exception exception) {
-      myException = exception;
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2046)
@@ -122,9 +122,16 @@
       <DependentUpon>ChooseTypeDialog.cs</DependentUpon>
     </Compile>
-    <Compile Include="AliasEventArgs.cs" />
     <Compile Include="CallGraph.cs" />
-    <Compile Include="CallNode.cs" />
+    <Compile Include="OperatorCallNode.cs" />
     <Compile Include="Cloner.cs" />
-    <Compile Include="ParameterEventArgs.cs" />
+    <Compile Include="CallGraphView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="CallGraphView.Designer.cs">
+      <DependentUpon>CallGraphView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="CancelEventArgs.cs" />
+    <Compile Include="CallNodeBase.cs" />
+    <Compile Include="EventArgs.cs" />
     <Compile Include="Interfaces\ICloner.cs" />
     <Compile Include="Interfaces\ICloneable.cs" />
@@ -140,5 +147,4 @@
     <Compile Include="Interfaces\ICallNode.cs" />
     <Compile Include="Interfaces\ICallGraph.cs" />
-    <Compile Include="KeyValueEventArgs.cs" />
     <Compile Include="OperatorBaseDescriptionView.cs">
       <SubType>UserControl</SubType>
@@ -150,6 +156,4 @@
     <Compile Include="Interfaces\IOperatorLibrary.cs" />
     <Compile Include="Interfaces\IVisualizationItem.cs" />
-    <Compile Include="NameChangingEventArgs.cs" />
-    <Compile Include="OperationEventArgs.cs" />
     <Compile Include="OperatorBaseVariablesView.cs">
       <SubType>UserControl</SubType>
@@ -164,5 +168,4 @@
       <DependentUpon>OperatorBaseVariableInfosView.cs</DependentUpon>
     </Compile>
-    <Compile Include="ExceptionEventArgs.cs" />
     <Compile Include="Interfaces\IItem.cs" />
     <Compile Include="ItemBase.cs" />
@@ -173,6 +176,4 @@
       <DependentUpon>ItemBaseView.cs</DependentUpon>
     </Compile>
-    <Compile Include="ItemEventArgs.cs" />
-    <Compile Include="ItemIndexEventArgs.cs" />
     <Compile Include="OperatorLibrary.cs" />
     <Compile Include="OperatorLibraryEditor.cs">
@@ -187,5 +188,4 @@
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
-    <Compile Include="ScopeIndexEventArgs.cs" />
     <Compile Include="EngineBaseEditor.cs">
       <SubType>UserControl</SubType>
@@ -194,6 +194,4 @@
       <DependentUpon>EngineBaseEditor.cs</DependentUpon>
     </Compile>
-    <Compile Include="VariableInfoEventArgs.cs" />
-    <Compile Include="VariableEventArgs.cs" />
     <Compile Include="Interfaces\IOperatorGroup.cs" />
     <Compile Include="Interfaces\IOperatorGraph.cs" />
@@ -201,10 +199,7 @@
     <Compile Include="Interfaces\IVariable.cs" />
     <Compile Include="Interfaces\IVariableInfo.cs" />
-    <Compile Include="OperatorEventArgs.cs" />
     <Compile Include="OperatorGroup.cs">
       <SubType>Code</SubType>
     </Compile>
-    <Compile Include="OperatorIndexEventArgs.cs" />
-    <Compile Include="ScopeEventArgs.cs" />
     <Compile Include="OperatorBaseView.cs">
       <SubType>UserControl</SubType>
@@ -300,4 +295,8 @@
       <SubType>Designer</SubType>
     </EmbeddedResource>
+    <EmbeddedResource Include="CallGraphView.resx">
+      <DependentUpon>CallGraphView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
     <EmbeddedResource Include="ParameterView.resx">
       <DependentUpon>ParameterView.cs</DependentUpon>
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/ICallGraph.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/ICallGraph.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/ICallGraph.cs	(revision 2046)
@@ -25,5 +25,14 @@
 
 namespace HeuristicLab.Core {
-  public interface ICallGraph : IItem {
+  public interface ICallGraph : ICallNode {
+    ICollection<ICallNode> CallNodes { get; }
+    ICallNode InitialCallNode { get; }
+
+    void RemoveCallNode(ICallNode callNode);
+
+    event EventHandler<EventArgs<ICallNode>> CallNodeAdded;
+    event EventHandler<EventArgs<ICallNode>> CallNodeRemoved;
+    event EventHandler InitialCallNodeChanged;
+
   }
 }
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/ICallNode.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/ICallNode.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/ICallNode.cs	(revision 2046)
@@ -26,4 +26,14 @@
 namespace HeuristicLab.Core {
   public interface ICallNode : IItem {
+    IEnumerable<KeyValuePair<string, string>> NameMappings { get; }
+    IList<ICallNode> SuccessorNodes { get; }
+    bool InitialCallNode { get; set; }
+
+    void AddNameMapping(string name, string alias);
+    void RemoveNameMapping(string name);
+    string MapName(string name);
+
+    event EventHandler<EventArgs<string, string>> NameMappingAdded;
+    event EventHandler<EventArgs<string, string>> NameMappingRemoved;
   }
 }
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IEngine.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IEngine.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IEngine.cs	(revision 2046)
@@ -87,9 +87,9 @@
     /// Occurs when an operation is executed.
     /// </summary>
-    event EventHandler<OperationEventArgs> OperationExecuted;
+    event EventHandler<EventArgs<IOperation>> OperationExecuted;
     /// <summary>
     /// Occurs when an exception was thrown.
     /// </summary>
-    event EventHandler<ExceptionEventArgs> ExceptionOccurred;
+    event EventHandler<EventArgs<Exception>> ExceptionOccurred;
     /// <summary>
     /// Occurs when the execution time was changed.
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IOperator.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IOperator.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IOperator.cs	(revision 2046)
@@ -92,9 +92,9 @@
     /// Occurs when a variable info has been added.
     /// </summary>
-    event EventHandler<ParameterEventArgs> ParameterAdded;
+    event EventHandler<EventArgs<IParameter>> ParameterAdded;
     /// <summary>
     /// Occurs when a variable info has been deleted.
     /// </summary>
-    event EventHandler<ParameterEventArgs> ParameterRemoved;
+    event EventHandler<EventArgs<IParameter>> ParameterRemoved;
     /// <summary>
     /// Occurs when the current instance is executed.
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IOperatorGraph.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IOperatorGraph.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IOperatorGraph.cs	(revision 2046)
@@ -57,9 +57,9 @@
     /// Occurs when a new operator has been added to the current instance.
     /// </summary>
-    event EventHandler<OperatorEventArgs> OperatorAdded;
+    event EventHandler<EventArgs<IOperator>> OperatorAdded;
     /// <summary>
     /// Occurs when an operator has been deleted from the current instance.
     /// </summary>
-    event EventHandler<OperatorEventArgs> OperatorRemoved;
+    event EventHandler<EventArgs<IOperator>> OperatorRemoved;
     /// <summary>
     /// Occurs when the initial operator (the starting one) has been changed.
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IParameter.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IParameter.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IParameter.cs	(revision 2046)
@@ -30,4 +30,5 @@
     Type DataType { get; }
     ParamterType Type { get; }
+    IItem Value { get; set; }
   }
 }
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IScope.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IScope.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IScope.cs	(revision 2046)
@@ -121,17 +121,17 @@
     /// Occurs when a variable has been added to the current instance.
     /// </summary>
-    event EventHandler<VariableEventArgs> VariableAdded;
+    event EventHandler<EventArgs<IVariable>> VariableAdded;
     /// <summary>
     /// Occurs when a variable has been deleted from the current instance.
     /// </summary>
-    event EventHandler<VariableEventArgs> VariableRemoved;
+    event EventHandler<EventArgs<IVariable>> VariableRemoved;
     /// <summary>
     /// Occurs when a sub scope has been added to the current instance.
     /// </summary>
-    event EventHandler<ScopeIndexEventArgs> SubScopeAdded;
+    event EventHandler<EventArgs<IScope, int>> SubScopeAdded;
     /// <summary>
     /// Occurs when a sub scope has been deleted from the current instance.
     /// </summary>
-    event EventHandler<ScopeIndexEventArgs> SubScopeRemoved;
+    event EventHandler<EventArgs<IScope, int>> SubScopeRemoved;
     /// <summary>
     /// Occurs when the sub scopes have been reordered.
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IVariable.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IVariable.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Interfaces/IVariable.cs	(revision 2046)
@@ -49,5 +49,5 @@
     /// Occurs when the name of the variable is currently changing.
     /// </summary>
-    event EventHandler<NameChangingEventArgs> NameChanging;
+    event EventHandler<CancelEventArgs<string>> NameChanging;
     /// <summary>
     /// Occurs when the name of the current instance has been changed.
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ItemEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ItemEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,47 +1,0 @@
-#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 item.
-  /// </summary>
-  public class ItemEventArgs : EventArgs {
-    private IItem myItem;
-    /// <summary>
-    /// Gets the affected item.
-    /// </summary>
-    public IItem Item {
-      get { return myItem; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ItemEventArgs"/> with the given <paramref name="item"/>.
-    /// </summary>
-    /// <param name="item">The affected item.</param>
-    public ItemEventArgs(IItem item) {
-      myItem = item;
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ItemIndexEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ItemIndexEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,51 +1,0 @@
-#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 item at a specified index.
-  /// </summary>
-  public class ItemIndexEventArgs : ItemEventArgs {
-    private int myIndex;
-    /// <summary>
-    /// Gets the affected index.
-    /// </summary>
-    public int Index {
-      get { return myIndex; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ItemIndexEventArgs"/> with the given <paramref name="item"/>
-    /// and the given <paramref name="index"/>.
-    /// </summary>
-    /// <remarks>Calls constructor of base class <see cref="ItemEventArgs"/>.</remarks>
-    /// <param name="item">The affected item.</param>
-    /// <param name="index">The affected index.</param>
-    public ItemIndexEventArgs(IItem item, int index)
-      : base(item) {
-      myIndex = index;
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/KeyValueEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/KeyValueEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,38 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Event arguments to be able to specify the affected key-value pair.
-  /// </summary>
-  public class KeyValueEventArgs : EventArgs {
-
-    private IItem key;
-    /// <summary>
-    /// Gets the affected key.
-    /// </summary>
-    public IItem Key {
-      get { return key; }
-    }
-
-    private IItem value;
-    /// <summary>
-    /// Gets the affected value.
-    /// </summary>
-    public IItem Value {
-      get { return value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="KeyValueEventArgs"/> with the given <paramref name="key"/>
-    /// and <paramref name="value"/>.
-    /// </summary>
-    /// <param name="key">The affected key.</param>
-    /// <param name="value">The affected value.</param>
-    public KeyValueEventArgs(IItem key, IItem value) {
-      this.key = key;
-      this.value = value; 
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/NameChangingEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/NameChangingEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,61 +1,0 @@
-#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.ComponentModel;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Event arguments to be able to specify the affected name.
-  /// </summary>
-  public class NameChangingEventArgs : CancelEventArgs {
-    private string myName;
-    /// <summary>
-    /// Gets the affected name.
-    /// </summary>
-    public string Name {
-      get { return myName; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="NameChangingEventArgs"/> 
-    /// with the specified <paramref name="name"/>.
-    /// </summary>
-    /// <param name="name">The affected name.</param>
-    public NameChangingEventArgs(string name)
-      : base() {
-      myName = name;
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="NameChangingEventArgs"/> 
-    /// with the specified <paramref name="name"/> and a flag whether the event has been canceled.
-    /// </summary>
-    /// <remarks>Calls constructor of base class <see cref="CancelEventArgs"/>.</remarks> 
-    /// <param name="name">The affected name.</param>
-    /// <param name="cancel">Flag, whether the event has been canceled.</param>
-    public NameChangingEventArgs(string name, bool cancel)
-      : base(cancel) {
-      myName = name;
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperationEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperationEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,48 +1,0 @@
-#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 operation.
-  /// </summary>
-  public class OperationEventArgs : EventArgs {
-    private IOperation myOperation;
-    /// <summary>
-    /// Gets the affected operation.
-    /// </summary>
-    public IOperation Operation {
-      get { return myOperation; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="OperationEventArgs"/> with the given 
-    /// <paramref name="operation"/>.
-    /// </summary>
-    /// <param name="operation">The affected operation.</param>
-    public OperationEventArgs(IOperation operation) {
-      myOperation = operation;
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorBase.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorBase.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorBase.cs	(revision 2046)
@@ -186,5 +186,5 @@
     }
     /// <inheritdoc/>
-    public event EventHandler<ParameterEventArgs> ParameterAdded;
+    public event EventHandler<EventArgs<IParameter>> ParameterAdded;
     /// <summary>
     /// Fires a new <c>VariableInfoAdded</c> event.
@@ -193,8 +193,8 @@
     protected virtual void OnParameterAdded(IParameter parameter) {
       if (ParameterAdded != null)
-        ParameterAdded(this, new ParameterEventArgs(parameter));
-    }
-    /// <inheritdoc/>
-    public event EventHandler<ParameterEventArgs> ParameterRemoved;
+        ParameterAdded(this, new EventArgs<IParameter>(parameter));
+    }
+    /// <inheritdoc/>
+    public event EventHandler<EventArgs<IParameter>> ParameterRemoved;
     /// <summary>
     /// Fires a new <c>VariableInfoRemoved</c> event.
@@ -203,5 +203,5 @@
     protected virtual void OnParameterRemoved(IParameter parameter) {
       if (ParameterRemoved != null)
-        ParameterRemoved(this, new ParameterEventArgs(parameter));
+        ParameterRemoved(this, new EventArgs<IParameter>(parameter));
     }
     /// <inheritdoc/>
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorCallNode.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorCallNode.cs	(revision 2046)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorCallNode.cs	(revision 2046)
@@ -0,0 +1,56 @@
+#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 HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Core {
+  public class OperatorCallNode : CallNodeBase {
+    [Storable]
+    private IOperator myOperator;
+    public IOperator Operator {
+      get { return myOperator; }
+      set {
+        if (myOperator != value) {
+          ClearNameMappings();
+          myOperator = value;
+          OnOperatorChanged();
+          foreach (IParameter parameter in value.Parameters)
+            AddNameMapping(parameter.Name, parameter.Name);
+        }
+      }
+    }
+
+    public override ICloneable Clone(ICloner cloner) {
+      OperatorCallNode clone = (OperatorCallNode)base.Clone(cloner);
+      clone.Operator = (IOperator)cloner.Clone(Operator);
+      return clone;
+    }
+
+    public event EventHandler OperatorChanged;
+    protected virtual void OnOperatorChanged() {
+      if (OperatorChanged != null)
+        OperatorChanged(this, new EventArgs());
+    }
+  }
+}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,49 +1,0 @@
-#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 operator.
-  /// </summary>
-  public class OperatorEventArgs : ItemEventArgs {
-    /// <summary>
-    /// Gets the affected operator.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ItemEventArgs.Item"/> of base class <see cref="ItemEventArgs"/>.
-    /// No own data storage present.</remarks>
-    public IOperator Operator {
-      get { return (IOperator)Item; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="OperatorEventArgs"/> with the specified operator.
-    /// </summary>
-    /// <remarks>Calls constructor of base class <see cref="ItemEventArgs"/>.</remarks>
-    /// <param name="op">The affected operator.</param>
-    public OperatorEventArgs(IOperator op)
-      : base(op) {
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorGraph.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 2046)
@@ -127,5 +127,5 @@
 
     /// <inheritdoc/>
-    public event EventHandler<OperatorEventArgs> OperatorAdded;
+    public event EventHandler<EventArgs<IOperator>> OperatorAdded;
     /// <summary>
     /// Fires a new <c>OperatorAdded</c> event.
@@ -134,8 +134,8 @@
     protected virtual void OnOperatorAdded(IOperator op) {
       if (OperatorAdded != null)
-        OperatorAdded(this, new OperatorEventArgs(op));
+        OperatorAdded(this, new EventArgs<IOperator>(op));
     }
     /// <inheritdoc/>
-    public event EventHandler<OperatorEventArgs> OperatorRemoved;
+    public event EventHandler<EventArgs<IOperator>> OperatorRemoved;
     /// <summary>
     /// Fires a new <c>OperatorRemoved</c> event.
@@ -144,5 +144,5 @@
     protected virtual void OnOperatorRemoved(IOperator op) {
       if (OperatorRemoved != null)
-        OperatorRemoved(this, new OperatorEventArgs(op));
+        OperatorRemoved(this, new EventArgs<IOperator>(op));
     }
     /// <inheritdoc/>
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorIndexEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/OperatorIndexEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,51 +1,0 @@
-#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 operator at the specified index.
-  /// </summary>
-  public class OperatorIndexEventArgs : ItemIndexEventArgs {
-    /// <summary>
-    /// Gets the affected operator.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ItemEventArgs.Item"/> of base class 
-    /// <see cref="ItemIndexEventArgs"/>. No own data storage present.</remarks>
-    public IOperator Operator {
-      get { return (IOperator)Item; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="OperatorIndexEventArgs"/> with the given operator
-    /// and the specified <paramref name="index"/>.
-    /// </summary>
-    /// <remarks>Calls constructor of base class <see cref="ItemIndexEventArgs"/>.</remarks>
-    /// <param name="op">The affected operator.</param>
-    /// <param name="index">The affected index.</param>
-    public OperatorIndexEventArgs(IOperator op, int index)
-      : base(op, index) {
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ParameterEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ParameterEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,50 +1,0 @@
-#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 an affected parameter.
-  /// </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="VariableInfoEventArgs"/> with the specified 
-    /// <paramref name="parameter"/>.
-    /// </summary>
-    /// <remarks>Calls constructor of base class <see cref="ItemEventArgs"/>.</remarks>
-    /// <param name="variableInfo">The affected parameter.</param>
-    public ParameterEventArgs(IParameter parameter)
-      : base(parameter) {
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Scope.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Scope.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Scope.cs	(revision 2046)
@@ -238,5 +238,5 @@
 
     /// <inheritdoc />
-    public event EventHandler<VariableEventArgs> VariableAdded;
+    public event EventHandler<EventArgs<IVariable>> VariableAdded;
     /// <summary>
     /// Fires a new <c>VariableAdded</c> event.
@@ -245,8 +245,8 @@
     protected virtual void OnVariableAdded(IVariable variable) {
       if (VariableAdded != null)
-        VariableAdded(this, new VariableEventArgs(variable));
+        VariableAdded(this, new EventArgs<IVariable>(variable));
     }
     /// <inheritdoc />
-    public event EventHandler<VariableEventArgs> VariableRemoved;
+    public event EventHandler<EventArgs<IVariable>> VariableRemoved;
     /// <summary>
     /// Fires a new <c>VariableRemoved</c>.
@@ -255,8 +255,8 @@
     protected virtual void OnVariableRemoved(IVariable variable) {
       if (VariableRemoved != null)
-        VariableRemoved(this, new VariableEventArgs(variable));
-    }
-    /// <inheritdoc/>
-    public event EventHandler<ScopeIndexEventArgs> SubScopeAdded;
+        VariableRemoved(this, new EventArgs<IVariable>(variable));
+    }
+    /// <inheritdoc/>
+    public event EventHandler<EventArgs<IScope, int>> SubScopeAdded;
     /// <summary>
     /// Fires a new <c>SubScopeAdded</c> event.
@@ -266,8 +266,8 @@
     protected virtual void OnSubScopeAdded(IScope scope, int index) {
       if (SubScopeAdded != null)
-        SubScopeAdded(this, new ScopeIndexEventArgs(scope, index));
-    }
-    /// <inheritdoc/>
-    public event EventHandler<ScopeIndexEventArgs> SubScopeRemoved;
+        SubScopeAdded(this, new EventArgs<IScope,int>(scope, index));
+    }
+    /// <inheritdoc/>
+    public event EventHandler<EventArgs<IScope, int>> SubScopeRemoved;
     /// <summary>
     /// Fires a new <c>SubScopeRemoved</c> event.
@@ -277,5 +277,5 @@
     protected virtual void OnSubScopeRemoved(IScope scope, int index) {
       if (SubScopeRemoved != null)
-        SubScopeRemoved(this, new ScopeIndexEventArgs(scope, index));
+        SubScopeRemoved(this, new EventArgs<IScope,int>(scope, index));
     }
     /// <inheritdoc />
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ScopeEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ScopeEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,48 +1,0 @@
-#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 scope.
-  /// </summary>
-  public class ScopeEventArgs : ItemEventArgs {
-    /// <summary>
-    /// Gets the affected scope.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ItemEventArgs.Item"/> of base class <see cref="ItemEventArgs"/>.
-    /// No own data storage present.</remarks>
-    public IScope Scope {
-      get { return (IScope)Item; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ScopeEventArgs"/> with the specified scope.
-    /// </summary>
-    /// <param name="scope">The affected scope.</param>
-    public ScopeEventArgs(IScope scope)
-      : base(scope) {
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ScopeIndexEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/ScopeIndexEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,51 +1,0 @@
-#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 scope at the specified index.
-  /// </summary>
-  public class ScopeIndexEventArgs : ItemIndexEventArgs {
-    /// <summary>
-    /// Gets the affected scope.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ItemEventArgs.Item"/> of base class 
-    /// <see cref="ItemIndexEventArgs"/>. No own data storage present.</remarks>
-    public IScope Scope {
-      get { return (IScope)Item; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ScopeIndexEventArgs"/> with the specified 
-    /// <paramref name="scope"/> and <paramref name="index"/>.
-    /// </summary>
-    /// <remarks>Calls constructor of base class <see cref="ItemIndexEventArgs"/>.</remarks>
-    /// <param name="scope">The affected scope.</param>
-    /// <param name="index">The affected index.</param>
-    public ScopeIndexEventArgs(IScope scope, int index)
-      : base(scope, index) {
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Variable.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Variable.cs	(revision 2042)
+++ branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/Variable.cs	(revision 2046)
@@ -41,7 +41,5 @@
       set {
         if (!myName.Equals(value)) {
-          NameChangingEventArgs e = new NameChangingEventArgs(value);
-          OnNameChanging(e);
-          if (!e.Cancel) {
+          if (! OnNameChanging(value).Cancel) {
             myName = value;
             OnNameChanged();
@@ -120,12 +118,14 @@
 
     /// <inheritdoc/>
-    public event EventHandler<NameChangingEventArgs> NameChanging;
+    public event EventHandler<CancelEventArgs<string>> NameChanging;
     /// <summary>
     /// Fires a new <c>NameChanging</c> event.
     /// </summary>
     /// <param name="e">The event arguments of the changing.</param>
-    protected virtual void OnNameChanging(NameChangingEventArgs e) {
+    protected virtual CancelEventArgs<string> OnNameChanging(string name) {
+      CancelEventArgs<string> eventArgs = new CancelEventArgs<string>(name);
       if (NameChanging != null)
-        NameChanging(this, e);
+        NameChanging(this, eventArgs);
+      return eventArgs;
     }
     /// <inheritdoc/>
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/VariableEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/VariableEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,50 +1,0 @@
-#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.
-  /// </summary>
-  public class VariableEventArgs : ItemEventArgs {
-    /// <summary>
-    /// Gets the affected variable.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ItemEventArgs.Item"/> of base class <see cref="ItemEventArgs"/>.
-    /// No own data storage present.</remarks>
-    public IVariable Variable {
-      get { return (IVariable)Item; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="VariableEventArgs"/> with the specified 
-    /// <paramref name="variable"/>.
-    /// </summary>
-    /// <remarks>Calls constructor of base class <see cref="ItemEventArgs"/>.</remarks>
-    /// <param name="variable">The affected variable.</param>
-    public VariableEventArgs(IVariable variable)
-      : base(variable) {
-    }
-  }
-}
Index: branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/VariableInfoEventArgs.cs
===================================================================
--- branches/Operator Architecture Refactoring/HeuristicLab.Core/3.3/VariableInfoEventArgs.cs	(revision 2042)
+++ 	(revision )
@@ -1,50 +1,0 @@
-#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 VariableInfoEventArgs : ItemEventArgs {
-    /// <summary>
-    /// Gets the affected variable info.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ItemEventArgs.Item"/> of base class <see cref="ItemEventArgs"/>.
-    /// No own data storage present.</remarks>
-    public IVariableInfo VariableInfo {
-      get { return (IVariableInfo)Item; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="VariableInfoEventArgs"/> with the specified 
-    /// <paramref name="variableInfo"/>.
-    /// </summary>
-    /// <remarks>Calls constructor of base class <see cref="ItemEventArgs"/>.</remarks>
-    /// <param name="variableInfo">The affected variable info.</param>
-    public VariableInfoEventArgs(IVariableInfo variableInfo)
-      : base(variableInfo) {
-    }
-  }
-}
