Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs	(revision 2932)
@@ -38,5 +38,5 @@
         foreach (ListViewItem listViewItem in itemsListView.Items) {
           T item = listViewItem.Tag as T;
-          if (item != null) item.Changed -= new ChangedEventHandler(Item_Changed);
+          if (item != null) item.ToStringChanged -= new EventHandler(Item_ToStringChanged);
         }
         if (components != null) components.Dispose();
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemArrayView.cs	(revision 2932)
@@ -129,14 +129,14 @@
       itemsListView.Items.Add(listViewItem);
       if (listViewItem.Tag != null)
-        ((T)listViewItem.Tag).Changed += new ChangedEventHandler(Item_Changed);
+        ((T)listViewItem.Tag).ToStringChanged += new EventHandler(Item_ToStringChanged);
     }
     protected virtual void InsertListViewItem(int index, ListViewItem listViewItem) {
       itemsListView.Items.Insert(index, listViewItem);
       if (listViewItem.Tag != null)
-        ((T)listViewItem.Tag).Changed += new ChangedEventHandler(Item_Changed);
+        ((T)listViewItem.Tag).ToStringChanged += new EventHandler(Item_ToStringChanged);
     }
     protected virtual void RemoveListViewItem(ListViewItem listViewItem) {
       if (listViewItem.Tag != null)
-        ((T)listViewItem.Tag).Changed -= new ChangedEventHandler(Item_Changed);
+        ((T)listViewItem.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);
       listViewItem.Remove();
     }
@@ -309,7 +309,7 @@
 
     #region Item Events
-    protected virtual void Item_Changed(object sender, ChangedEventArgs e) {
+    protected virtual void Item_ToStringChanged(object sender, EventArgs e) {
       if (InvokeRequired)
-        Invoke(new ChangedEventHandler(Item_Changed), sender, e);
+        Invoke(new EventHandler(Item_ToStringChanged), sender, e);
       else {
         T item = (T)sender;
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs	(revision 2932)
@@ -38,5 +38,5 @@
       if (disposing) {
         foreach (ListViewItem item in itemsListView.Items)
-          ((T)item.Tag).Changed -= new ChangedEventHandler(Item_Changed);
+          ((T)item.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);
         if (components != null) components.Dispose();
       }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 2932)
@@ -109,10 +109,10 @@
     protected virtual void AddListViewItem(ListViewItem listViewItem) {
       itemsListView.Items.Add(listViewItem);
-      ((T)listViewItem.Tag).Changed += new ChangedEventHandler(Item_Changed);
+      ((T)listViewItem.Tag).ToStringChanged += new EventHandler(Item_ToStringChanged);
       sortAscendingButton.Enabled = itemsListView.Items.Count > 0;
       sortDescendingButton.Enabled = itemsListView.Items.Count > 0;
     }
     protected virtual void RemoveListViewItem(ListViewItem listViewItem) {
-      ((T)listViewItem.Tag).Changed -= new ChangedEventHandler(Item_Changed);
+      ((T)listViewItem.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);
       listViewItem.Remove();
       sortAscendingButton.Enabled = itemsListView.Items.Count > 0;
@@ -254,7 +254,7 @@
 
     #region Item Events
-    protected virtual void Item_Changed(object sender, ChangedEventArgs e) {
-      if (InvokeRequired)
-        Invoke(new ChangedEventHandler(Item_Changed), sender, e);
+    protected virtual void Item_ToStringChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Item_ToStringChanged), sender, e);
       else {
         T item = (T)sender;
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs	(revision 2932)
@@ -37,5 +37,5 @@
       if (disposing) {
         foreach (ListViewItem item in itemsListView.Items)
-          ((T)item.Tag).Changed -= new ChangedEventHandler(Item_Changed);
+          ((T)item.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);
         if (components != null) components.Dispose();
       }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 2932)
@@ -131,12 +131,12 @@
     protected virtual void AddListViewItem(ListViewItem listViewItem) {
       itemsListView.Items.Add(listViewItem);
-      ((T)listViewItem.Tag).Changed += new ChangedEventHandler(Item_Changed);
+      ((T)listViewItem.Tag).ToStringChanged += new EventHandler(Item_ToStringChanged);
     }
     protected virtual void InsertListViewItem(int index, ListViewItem listViewItem) {
       itemsListView.Items.Insert(index, listViewItem);
-      ((T)listViewItem.Tag).Changed += new ChangedEventHandler(Item_Changed);
+      ((T)listViewItem.Tag).ToStringChanged += new EventHandler(Item_ToStringChanged);
     }
     protected virtual void RemoveListViewItem(ListViewItem listViewItem) {
-      ((T)listViewItem.Tag).Changed -= new ChangedEventHandler(Item_Changed);
+      ((T)listViewItem.Tag).ToStringChanged -= new EventHandler(Item_ToStringChanged);
       listViewItem.Remove();
     }
@@ -333,7 +333,7 @@
 
     #region Item Events
-    protected virtual void Item_Changed(object sender, ChangedEventArgs e) {
-      if (InvokeRequired)
-        Invoke(new ChangedEventHandler(Item_Changed), sender, e);
+    protected virtual void Item_ToStringChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Item_ToStringChanged), sender, e);
       else {
         T item = (T)sender;
Index: unk/sources/HeuristicLab.Core/3.3/ChangedEventArgs.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ChangedEventArgs.cs	(revision 2931)
+++ 	(revision )
@@ -1,44 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 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.Common;
-
-namespace HeuristicLab.Core {
-  public delegate void ChangedEventHandler(object sender, ChangedEventArgs e);
-
-  public class ChangedEventArgs : EventArgs {
-    private HashSet<object> changedObjects;
-
-    public ChangedEventArgs() {
-      changedObjects = new HashSet<object>(new ReferenceEqualityComparer<object>());
-    }
-    public ChangedEventArgs(IEnumerable<object> collection) {
-      changedObjects = new HashSet<object>(collection, new ReferenceEqualityComparer<object>());
-    }
-
-    public bool RegisterChangedObject(object obj) {
-      return changedObjects.Add(obj);
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2932)
@@ -102,5 +102,4 @@
     <Compile Include="Cloner.cs" />
     <Compile Include="Attributes\CreatableAttribute.cs" />
-    <Compile Include="ChangedEventArgs.cs" />
     <None Include="HeuristicLabCorePlugin.cs.frame" />
     <Compile Include="Interfaces\IParameterizedNamedItem.cs" />
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs	(revision 2932)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using System.Drawing;
 
@@ -31,5 +32,5 @@
     Image ItemImage { get; }
 
-    event ChangedEventHandler Changed;
+    event EventHandler ToStringChanged;
   }
 }
Index: /trunk/sources/HeuristicLab.Core/3.3/Item.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Item.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/Item.cs	(revision 2932)
@@ -20,4 +20,5 @@
 #endregion
 
+using System;
 using System.Drawing;
 using HeuristicLab.Common.Resources;
@@ -49,11 +50,8 @@
     }
 
-    public event ChangedEventHandler Changed;
-    protected void OnChanged() {
-      OnChanged(new ChangedEventArgs());
-    }
-    protected virtual void OnChanged(ChangedEventArgs e) {
-      if ((e.RegisterChangedObject(this)) && (Changed != null))
-        Changed(this, e);
+    public event EventHandler ToStringChanged;
+    protected virtual void OnToStringChanged() {
+      if (ToStringChanged != null)
+        ToStringChanged(this, EventArgs.Empty);
     }
   }
Index: /trunk/sources/HeuristicLab.Core/3.3/ItemArray.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ItemArray.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/ItemArray.cs	(revision 2932)
@@ -35,13 +35,4 @@
   [Item("ItemArray<T>", "Represents an array of items.")]
   public class ItemArray<T> : ObservableArray<T>, IItem where T : class, IItem {
-    [Storable(Name = "RestoreEvents")]
-    private object RestoreEvents {
-      get { return null; }
-      set {
-        foreach (T item in this)
-          if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -56,12 +47,6 @@
     public ItemArray() : base() { }
     public ItemArray(int length) : base(length) { }
-    public ItemArray(T[] array) : base(array) {
-      foreach (T item in this)
-        if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-    }
-    public ItemArray(IEnumerable<T> collection) : base(collection) {
-      foreach (T item in this)
-        if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-    }
+    public ItemArray(T[] array) : base(array) { }
+    public ItemArray(IEnumerable<T> collection) : base(collection) { }
 
     public object Clone() {
@@ -79,34 +64,8 @@
     }
 
-    public event ChangedEventHandler Changed;
-    protected void OnChanged() {
-      OnChanged(new ChangedEventArgs());
-    }
-    protected virtual void OnChanged(ChangedEventArgs e) {
-      if ((e.RegisterChangedObject(this)) && (Changed != null))
-        Changed(this, e);
-    }
-
-    protected override void OnItemsReplaced(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) {
-      foreach (IndexedItem<T> oldItem in oldItems)
-        if (oldItem.Value != null) oldItem.Value.Changed -= new ChangedEventHandler(Item_Changed);
-      foreach (IndexedItem<T> item in items)
-        if (item.Value != null) item.Value.Changed += new ChangedEventHandler(Item_Changed);
-      base.OnItemsReplaced(items, oldItems);
-    }
-    protected override void OnCollectionReset(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) {
-      foreach (IndexedItem<T> oldItem in oldItems)
-        if (oldItem.Value != null) oldItem.Value.Changed -= new ChangedEventHandler(Item_Changed);
-      foreach (IndexedItem<T> item in items)
-        if (item.Value != null) item.Value.Changed += new ChangedEventHandler(Item_Changed);
-      base.OnCollectionReset(items, oldItems);
-    }
-    protected override void OnPropertyChanged(string propertyName) {
-      base.OnPropertyChanged(propertyName);
-      OnChanged();
-    }
-
-    private void Item_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
+    public event EventHandler ToStringChanged;
+    protected virtual void OnToStringChanged() {
+      if (ToStringChanged != null)
+        ToStringChanged(this, EventArgs.Empty);
     }
   }
Index: /trunk/sources/HeuristicLab.Core/3.3/ItemCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ItemCollection.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/ItemCollection.cs	(revision 2932)
@@ -32,13 +32,4 @@
   [Item("ItemCollection<T>", "Represents a collection of items.")]
   public class ItemCollection<T> : ObservableCollection<T>, IItem where T : class, IItem {
-    [Storable(Name = "RestoreEvents")]
-    private object RestoreEvents {
-      get { return null; }
-      set {
-        foreach (T item in this)
-          if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -53,8 +44,5 @@
     public ItemCollection() : base() { }
     public ItemCollection(int capacity) : base(capacity) { }
-    public ItemCollection(IEnumerable<T> collection) : base(collection) {
-      foreach (T item in this)
-        if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-    }
+    public ItemCollection(IEnumerable<T> collection) : base(collection) { }
 
     public object Clone() {
@@ -72,37 +60,8 @@
     }
 
-    public event ChangedEventHandler Changed;
-    protected void OnChanged() {
-      OnChanged(new ChangedEventArgs());
-    }
-    protected virtual void OnChanged(ChangedEventArgs e) {
-      if ((e.RegisterChangedObject(this)) && (Changed != null))
-        Changed(this, e);
-    }
-
-    protected override void OnItemsAdded(IEnumerable<T> items) {
-      foreach (T item in items)
-        if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-      base.OnItemsAdded(items);
-    }
-    protected override void OnItemsRemoved(IEnumerable<T> items) {
-      foreach (T item in items)
-        if (item != null) item.Changed -= new ChangedEventHandler(Item_Changed);
-      base.OnItemsRemoved(items);
-    }
-    protected override void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) {
-      foreach (T oldItem in oldItems)
-        if (oldItem != null) oldItem.Changed -= new ChangedEventHandler(Item_Changed);
-      foreach (T item in items)
-        if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-      base.OnCollectionReset(items, oldItems);
-    }
-    protected override void OnPropertyChanged(string propertyName) {
-      base.OnPropertyChanged(propertyName);
-      OnChanged();
-    }
-
-    private void Item_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
+    public event EventHandler ToStringChanged;
+    protected virtual void OnToStringChanged() {
+      if (ToStringChanged != null)
+        ToStringChanged(this, EventArgs.Empty);
     }
   }
Index: /trunk/sources/HeuristicLab.Core/3.3/ItemList.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ItemList.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/ItemList.cs	(revision 2932)
@@ -36,13 +36,4 @@
   [Item("ItemList<T>", "Represents a list of items.")]
   public class ItemList<T> : ObservableList<T>, IItem where T : class, IItem {
-    [Storable(Name = "RestoreEvents")]
-    private object RestoreEvents {
-      get { return null; }
-      set {
-        foreach (T item in this)
-          if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -57,8 +48,5 @@
     public ItemList() : base() { }
     public ItemList(int capacity) : base(capacity) { }
-    public ItemList(IEnumerable<T> collection) : base(collection) {
-      foreach (T item in this)
-        if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-    }
+    public ItemList(IEnumerable<T> collection) : base(collection) { }
 
     public object Clone() {
@@ -76,44 +64,8 @@
     }
 
-    public event ChangedEventHandler Changed;
-    protected void OnChanged() {
-      OnChanged(new ChangedEventArgs());
-    }
-    protected virtual void OnChanged(ChangedEventArgs e) {
-      if ((e.RegisterChangedObject(this)) && (Changed != null))
-        Changed(this, e);
-    }
-
-    protected override void OnItemsAdded(IEnumerable<IndexedItem<T>> items) {
-      foreach (IndexedItem<T> item in items)
-        if (item.Value != null) item.Value.Changed += new ChangedEventHandler(Item_Changed);
-      base.OnItemsAdded(items);
-    }
-    protected override void OnItemsRemoved(IEnumerable<IndexedItem<T>> items) {
-      foreach (IndexedItem<T> item in items)
-        if (item.Value != null) item.Value.Changed -= new ChangedEventHandler(Item_Changed);
-      base.OnItemsRemoved(items);
-    }
-    protected override void OnItemsReplaced(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) {
-      foreach (IndexedItem<T> oldItem in oldItems)
-        if (oldItem.Value != null) oldItem.Value.Changed -= new ChangedEventHandler(Item_Changed);
-      foreach (IndexedItem<T> item in items)
-        if (item.Value != null) item.Value.Changed += new ChangedEventHandler(Item_Changed);
-      base.OnItemsReplaced(items, oldItems);
-    }
-    protected override void OnCollectionReset(IEnumerable<IndexedItem<T>> items, IEnumerable<IndexedItem<T>> oldItems) {
-      foreach (IndexedItem<T> oldItem in oldItems)
-        if (oldItem.Value != null) oldItem.Value.Changed -= new ChangedEventHandler(Item_Changed);
-      foreach (IndexedItem<T> item in items)
-        if (item.Value != null) item.Value.Changed += new ChangedEventHandler(Item_Changed);
-      base.OnCollectionReset(items, oldItems);
-    }
-    protected override void OnPropertyChanged(string propertyName) {
-      base.OnPropertyChanged(propertyName);
-      OnChanged();
-    }
-
-    private void Item_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
+    public event EventHandler ToStringChanged;
+    protected virtual void OnToStringChanged() {
+      if (ToStringChanged != null)
+        ToStringChanged(this, EventArgs.Empty);
     }
   }
Index: /trunk/sources/HeuristicLab.Core/3.3/ItemSet.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ItemSet.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/ItemSet.cs	(revision 2932)
@@ -36,13 +36,4 @@
   [Item("ItemSet<T>", "Represents a set of items.")]
   public class ItemSet<T> : ObservableSet<T>, IItem where T : class, IItem {
-    [Storable(Name = "RestoreEvents")]
-    private object RestoreEvents {
-      get { return null; }
-      set {
-        foreach (T item in this)
-          if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -56,8 +47,5 @@
 
     public ItemSet() : base() { }
-    public ItemSet(IEnumerable<T> collection) : base(collection) {
-      foreach (T item in this)
-        if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-    }
+    public ItemSet(IEnumerable<T> collection) : base(collection) { }
 
     public object Clone() {
@@ -75,37 +63,8 @@
     }
 
-    public event ChangedEventHandler Changed;
-    protected void OnChanged() {
-      OnChanged(new ChangedEventArgs());
-    }
-    protected virtual void OnChanged(ChangedEventArgs e) {
-      if ((e.RegisterChangedObject(this)) && (Changed != null))
-        Changed(this, e);
-    }
-
-    protected override void OnItemsAdded(IEnumerable<T> items) {
-      foreach (T item in items)
-        if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-      base.OnItemsAdded(items);
-    }
-    protected override void OnItemsRemoved(IEnumerable<T> items) {
-      foreach (T item in items)
-        if (item != null) item.Changed -= new ChangedEventHandler(Item_Changed);
-      base.OnItemsRemoved(items);
-    }
-    protected override void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) {
-      foreach (T oldItem in oldItems)
-        if (oldItem != null) oldItem.Changed -= new ChangedEventHandler(Item_Changed);
-      foreach (T item in items)
-        if (item != null) item.Changed += new ChangedEventHandler(Item_Changed);
-      base.OnCollectionReset(items, oldItems);
-    }
-    protected override void OnPropertyChanged(string propertyName) {
-      base.OnPropertyChanged(propertyName);
-      OnChanged();
-    }
-
-    private void Item_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
+    public event EventHandler ToStringChanged;
+    protected virtual void OnToStringChanged() {
+      if (ToStringChanged != null)
+        ToStringChanged(this, EventArgs.Empty);
     }
   }
Index: /trunk/sources/HeuristicLab.Core/3.3/NamedItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/NamedItem.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/NamedItem.cs	(revision 2932)
@@ -130,5 +130,5 @@
       if (NameChanged != null)
         NameChanged(this, EventArgs.Empty);
-      OnChanged();
+      OnToStringChanged();
     }
     /// <inheritdoc/>
@@ -141,5 +141,4 @@
       if (DescriptionChanged != null)
         DescriptionChanged(this, EventArgs.Empty);
-      OnChanged();
     }
   }
Index: /trunk/sources/HeuristicLab.Core/3.3/NamedItemCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/NamedItemCollection.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/NamedItemCollection.cs	(revision 2932)
@@ -66,11 +66,8 @@
     }
 
-    public event ChangedEventHandler Changed;
-    protected void OnChanged() {
-      OnChanged(new ChangedEventArgs());
-    }
-    protected virtual void OnChanged(ChangedEventArgs e) {
-      if ((e.RegisterChangedObject(this)) && (Changed != null))
-        Changed(this, e);
+    public event EventHandler ToStringChanged;
+    protected virtual void OnToStringChanged() {
+      if (ToStringChanged != null)
+        ToStringChanged(this, EventArgs.Empty);
     }
 
@@ -98,8 +95,4 @@
       base.OnCollectionReset(items, oldItems);
     }
-    protected override void OnPropertyChanged(string propertyName) {
-      base.OnPropertyChanged(propertyName);
-      OnChanged();
-    }
 
     private void RegisterItemEvents(IEnumerable<T> items) {
@@ -108,5 +101,4 @@
           item.NameChanging += new EventHandler<CancelEventArgs<string>>(Item_NameChanging);
           item.NameChanged += new EventHandler(Item_NameChanged);
-          item.Changed += new ChangedEventHandler(Item_Changed);
         }
       }
@@ -117,5 +109,4 @@
           item.NameChanging -= new EventHandler<CancelEventArgs<string>>(Item_NameChanging);
           item.NameChanged -= new EventHandler(Item_NameChanged);
-          item.Changed -= new ChangedEventHandler(Item_Changed);
         }
       }
@@ -129,7 +120,4 @@
       UpdateItemKey(item);
     }
-    private void Item_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 2932)
@@ -114,5 +114,4 @@
       if (InitialOperatorChanged != null)
         InitialOperatorChanged(this, EventArgs.Empty);
-      OnChanged();
     }
 
@@ -153,5 +152,4 @@
     private void RegisterOperatorsEvents() {
       if (operators != null) {
-        operators.Changed += new ChangedEventHandler(Operators_Changed);
         operators.ItemsAdded += new CollectionItemsChangedEventHandler<IOperator>(Operators_ItemsAdded);
         operators.ItemsRemoved += new CollectionItemsChangedEventHandler<IOperator>(Operators_ItemsRemoved);
@@ -175,5 +173,4 @@
           DeregisterOperatorEvents(op);
         }
-        operators.Changed -= new ChangedEventHandler(Operators_Changed);
         operators.ItemsAdded -= new CollectionItemsChangedEventHandler<IOperator>(Operators_ItemsAdded);
         operators.ItemsRemoved -= new CollectionItemsChangedEventHandler<IOperator>(Operators_ItemsRemoved);
@@ -240,7 +237,4 @@
       if (opParam.Value != null) Operators.Add(opParam.Value);
     }
-    private void Operators_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
-    }
     #endregion
   }
Index: /trunk/sources/HeuristicLab.Core/3.3/ParameterizedNamedItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ParameterizedNamedItem.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/ParameterizedNamedItem.cs	(revision 2932)
@@ -34,8 +34,6 @@
       get { return parameters; }
       private set {
-        if (parameters != null) parameters.Changed -= new ChangedEventHandler(Parameters_Changed);
         parameters = value;
         readOnlyParameters = null;
-        if (parameters != null) parameters.Changed += new ChangedEventHandler(Parameters_Changed);
       }
     }
@@ -83,8 +81,4 @@
       return clone;
     }
-
-    private void Parameters_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Core/3.3/Scope.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Scope.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/Scope.cs	(revision 2932)
@@ -41,13 +41,8 @@
     }
 
+    [Storable]
     private VariableCollection variables;
-    [Storable]
     public VariableCollection Variables {
       get { return variables; }
-      private set {
-        if (variables != null) variables.Changed -= new ChangedEventHandler(Variables_Changed);
-        variables = value;
-        if (variables != null) variables.Changed += new ChangedEventHandler(Variables_Changed);
-      }
     }
 
@@ -69,5 +64,5 @@
       : base("Anonymous") {
       parent = null;
-      Variables = new VariableCollection();
+      variables = new VariableCollection();
       SubScopes = new ScopeList();
     }
@@ -79,5 +74,5 @@
       : base(name) {
       parent = null;
-      Variables = new VariableCollection();
+      variables = new VariableCollection();
       SubScopes = new ScopeList();
     }
@@ -85,5 +80,5 @@
       : base(name, description) {
       parent = null;
-      Variables = new VariableCollection();
+      variables = new VariableCollection();
       SubScopes = new ScopeList();
     }
@@ -101,5 +96,5 @@
       clone.Name = Name;
       clone.Description = Description;
-      if (variables.Count > 0) clone.Variables = (VariableCollection)cloner.Clone(variables);
+      if (variables.Count > 0) clone.variables = (VariableCollection)cloner.Clone(variables);
       if (subScopes.Count > 0) clone.SubScopes = (ScopeList)cloner.Clone(subScopes);
       return clone;
@@ -113,5 +108,4 @@
         subScopes.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_ItemsReplaced);
         subScopes.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_CollectionReset);
-        subScopes.Changed += new ChangedEventHandler(SubScopes_Changed);
       }
     }
@@ -122,5 +116,4 @@
         subScopes.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_ItemsReplaced);
         subScopes.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<IScope>>(SubScopes_CollectionReset);
-        subScopes.Changed -= new ChangedEventHandler(SubScopes_Changed);
       }
     }
@@ -145,13 +138,4 @@
         item.Value.Parent = this;
     }
-    private void SubScopes_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
-    }
-    #endregion
-
-    #region Variables Events
-    private void Variables_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
-    }
     #endregion
   }
Index: /trunk/sources/HeuristicLab.Core/3.3/Variable.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Variable.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Core/3.3/Variable.cs	(revision 2932)
@@ -39,7 +39,7 @@
       set {
         if (this.value != value) {
-          if (this.value != null) this.value.Changed -= new ChangedEventHandler(Value_Changed);
+          if (this.value != null) this.value.ToStringChanged -= new EventHandler(Value_ToStringChanged);
           this.value = value;
-          if (this.value != null) this.value.Changed += new ChangedEventHandler(Value_Changed);
+          if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged);
           OnValueChanged();
         }
@@ -72,10 +72,10 @@
       : base(name) {
       this.value = value;
-      if (this.value != null) this.value.Changed += new ChangedEventHandler(Value_Changed);
+      if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged);
     }
     public Variable(string name, string description, IItem value)
       : base(name, description) {
       this.value = value;
-      if (this.value != null) this.value.Changed += new ChangedEventHandler(Value_Changed);
+      if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged);
     }
 
@@ -110,9 +110,8 @@
       if (ValueChanged != null)
         ValueChanged(this, EventArgs.Empty);
-      OnChanged();
     }
 
-    private void Value_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
+    private void Value_ToStringChanged(object sender, EventArgs e) {
+      OnToStringChanged();
     }
   }
Index: /trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.cs	(revision 2932)
@@ -50,5 +50,5 @@
 
     protected override void DeregisterContentEvents() {
-      Content.Changed -= new ChangedEventHandler(Content_Changed);
+      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
       base.DeregisterContentEvents();
     }
@@ -56,5 +56,5 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.Changed += new ChangedEventHandler(Content_Changed);
+      Content.ValueChanged += new EventHandler(Content_ValueChanged);
     }
 
@@ -72,7 +72,7 @@
     }
 
-    private void Content_Changed(object sender, ChangedEventArgs e) {
+    private void Content_ValueChanged(object sender, EventArgs e) {
       if (InvokeRequired)
-        Invoke(new ChangedEventHandler(Content_Changed), sender, e);
+        Invoke(new EventHandler(Content_ValueChanged), sender, e);
       else
         valueCheckBox.Checked = Content.Value;
Index: /trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonDataView.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonDataView.cs	(revision 2932)
@@ -51,5 +51,5 @@
 
     protected override void DeregisterContentEvents() {
-      Content.Changed -= new ChangedEventHandler(Content_Changed);
+      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
       base.DeregisterContentEvents();
     }
@@ -57,5 +57,5 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.Changed += new ChangedEventHandler(Content_Changed);
+      Content.ValueChanged += new EventHandler(Content_ValueChanged);
     }
 
@@ -72,7 +72,7 @@
     }
 
-    private void Content_Changed(object sender, ChangedEventArgs e) {
+    private void Content_ValueChanged(object sender, EventArgs e) {
       if (InvokeRequired)
-        Invoke(new ChangedEventHandler(Content_Changed), sender, e);
+        Invoke(new EventHandler(Content_ValueChanged), sender, e);
       else
         valueComboBox.SelectedItem = Content.Value;
Index: /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.cs	(revision 2932)
@@ -53,5 +53,5 @@
 
     protected override void DeregisterContentEvents() {
-      Content.Changed -= new ChangedEventHandler(Content_Changed);
+      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
       base.DeregisterContentEvents();
     }
@@ -59,5 +59,5 @@
     protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
-      Content.Changed += new ChangedEventHandler(Content_Changed);
+      Content.ValueChanged += new EventHandler(Content_ValueChanged);
     }
 
@@ -75,7 +75,7 @@
     }
 
-    private void Content_Changed(object sender, ChangedEventArgs e) {
+    private void Content_ValueChanged(object sender, EventArgs e) {
       if (InvokeRequired)
-        Invoke(new ChangedEventHandler(Content_Changed), sender, e);
+        Invoke(new EventHandler(Content_ValueChanged), sender, e);
       else
         valueTextBox.Text = Content.GetValue();
Index: /trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleData.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleData.cs	(revision 2932)
@@ -32,5 +32,5 @@
     bool SetValue(string value);
 
-    event ChangedEventHandler Changed;
+    event EventHandler ValueChanged;
   }
 }
Index: /trunk/sources/HeuristicLab.Data/3.3/StringArrayData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/StringArrayData.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data/3.3/StringArrayData.cs	(revision 2932)
@@ -139,5 +139,5 @@
       if (ItemChanged != null)
         ItemChanged(this, new EventArgs<int, int>(index, 0));
-      OnChanged();
+      OnToStringChanged();
     }
     private event EventHandler Reset;
@@ -149,5 +149,5 @@
       if (Reset != null)
         Reset(this, EventArgs.Empty);
-      OnChanged();
+      OnToStringChanged();
     }
     #endregion
Index: /trunk/sources/HeuristicLab.Data/3.3/StringData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/StringData.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data/3.3/StringData.cs	(revision 2932)
@@ -40,5 +40,5 @@
           if ((value != null) || (this.value != string.Empty)) {
             this.value = value != null ? value : string.Empty;
-            OnChanged();
+            OnValueChanged();
           }
         }
@@ -71,4 +71,11 @@
     }
 
+    public event EventHandler ValueChanged;
+    private void OnValueChanged() {
+      if (ValueChanged != null)
+        ValueChanged(this, EventArgs.Empty);
+      OnToStringChanged();
+    }
+
     #region IStringConvertibleData Members
     bool IStringConvertibleData.Validate(string value, out string errorMessage) {
Index: /trunk/sources/HeuristicLab.Data/3.3/StringMatrixData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/StringMatrixData.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data/3.3/StringMatrixData.cs	(revision 2932)
@@ -160,5 +160,5 @@
       if (ItemChanged != null)
         ItemChanged(this, new EventArgs<int, int>(rowIndex, columnIndex));
-      OnChanged();
+      OnToStringChanged();
     }
     private event EventHandler Reset;
@@ -170,5 +170,5 @@
       if (Reset != null)
         Reset(this, EventArgs.Empty);
-      OnChanged();
+      OnToStringChanged();
     }
     #endregion
Index: /trunk/sources/HeuristicLab.Data/3.3/ValueTypeArrayData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/ValueTypeArrayData.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data/3.3/ValueTypeArrayData.cs	(revision 2932)
@@ -95,5 +95,5 @@
       if (ItemChanged != null)
         ItemChanged(this, new EventArgs<int, int>(index, 0));
-      OnChanged();
+      OnToStringChanged();
     }
     protected event EventHandler Reset;
@@ -101,5 +101,5 @@
       if (Reset != null)
         Reset(this, EventArgs.Empty);
-      OnChanged();
+      OnToStringChanged();
     }
   }
Index: /trunk/sources/HeuristicLab.Data/3.3/ValueTypeData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/ValueTypeData.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data/3.3/ValueTypeData.cs	(revision 2932)
@@ -38,5 +38,5 @@
         if (!value.Equals(this.value)) {
           this.value = value;
-          OnChanged();
+          OnValueChanged();
         }
       }
@@ -59,4 +59,11 @@
       return value.ToString();
     }
+
+    public event EventHandler ValueChanged;
+    protected virtual void OnValueChanged() {
+      if (ValueChanged != null)
+        ValueChanged(this, EventArgs.Empty);
+      OnToStringChanged();
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Data/3.3/ValueTypeMatrixData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/ValueTypeMatrixData.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Data/3.3/ValueTypeMatrixData.cs	(revision 2932)
@@ -112,5 +112,5 @@
       if (ItemChanged != null)
         ItemChanged(this, new EventArgs<int, int>(rowIndex, columnIndex));
-      OnChanged();
+      OnToStringChanged();
     }
     protected event EventHandler Reset;
@@ -118,5 +118,5 @@
       if (Reset != null)
         Reset(this, EventArgs.Empty);
-      OnChanged();
+      OnToStringChanged();
     }
   }
Index: /trunk/sources/HeuristicLab.Encodings.Permutation/3.3/Tests/Random.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.Permutation/3.3/Tests/Random.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Encodings.Permutation/3.3/Tests/Random.cs	(revision 2932)
@@ -112,5 +112,5 @@
     }
 
-    public event ChangedEventHandler Changed;
+    public event EventHandler ToStringChanged;
 
     #endregion
Index: /trunk/sources/HeuristicLab.Encodings.RealVector/3.3/Tests/TestRandom.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.RealVector/3.3/Tests/TestRandom.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Encodings.RealVector/3.3/Tests/TestRandom.cs	(revision 2932)
@@ -112,5 +112,5 @@
     }
 
-    public event ChangedEventHandler Changed;
+    public event EventHandler ToStringChanged;
 
     #endregion
Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs	(revision 2932)
@@ -37,4 +37,5 @@
 using HeuristicLab.PluginInfrastructure;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Collections;
 
 namespace HeuristicLab.Operators.Programmable {
@@ -168,10 +169,13 @@
       Plugins = defaultPluginDict;
       namespaces = new HashSet<string>(DiscoverNamespaces());
-      Parameters.Changed += (s, a) => OnSignatureChanged(s, a);
-    }
-
-    protected void OnSignatureChanged(object sender, EventArgs args) {
+      Parameters.ItemsAdded += (s, a) => OnSignatureChanged(s, a);
+      Parameters.ItemsRemoved += (s, a) => OnSignatureChanged(s, a);
+      Parameters.ItemsReplaced += (s, a) => OnSignatureChanged(s, a);
+      Parameters.CollectionReset += (s, a) => OnSignatureChanged(s, a);
+    }
+
+    protected void OnSignatureChanged(object sender, CollectionItemsChangedEventArgs<IParameter> args) {
       if (SignatureChanged != null)
-        SignatureChanged(sender, args);
+        SignatureChanged(sender, EventArgs.Empty);
     }
 
Index: /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Operators/3.3/Operator.cs	(revision 2932)
@@ -163,5 +163,4 @@
         BreakpointChanged(this, EventArgs.Empty);
       }
-      OnChanged();
     }
     /// <inheritdoc/>
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs	(revision 2932)
@@ -112,5 +112,4 @@
       if (ProblemChanged != null)
         ProblemChanged(this, EventArgs.Empty);
-      OnChanged();
     }
     public event EventHandler ExecutionTimeChanged;
@@ -118,5 +117,4 @@
       if (ExecutionTimeChanged != null)
         ExecutionTimeChanged(this, EventArgs.Empty);
-      OnChanged();
     }
     public event EventHandler Prepared;
@@ -124,5 +122,4 @@
       if (Prepared != null)
         Prepared(this, EventArgs.Empty);
-      OnChanged();
     }
     public event EventHandler Started;
@@ -130,5 +127,4 @@
       if (Started != null)
         Started(this, EventArgs.Empty);
-      OnChanged();
     }
     public event EventHandler Stopped;
@@ -136,5 +132,4 @@
       if (Stopped != null)
         Stopped(this, EventArgs.Empty);
-      OnChanged();
     }
     protected virtual void OnCanceledChanged() { }
@@ -147,17 +142,12 @@
       problem.SolutionCreatorChanged -= new EventHandler(Problem_SolutionCreatorChanged);
       problem.EvaluatorChanged -= new EventHandler(Problem_EvaluatorChanged);
-      problem.Changed -= new ChangedEventHandler(Problem_Changed);
     }
     protected virtual void RegisterProblemEvents() {
       problem.SolutionCreatorChanged += new EventHandler(Problem_SolutionCreatorChanged);
       problem.EvaluatorChanged += new EventHandler(Problem_EvaluatorChanged);
-      problem.Changed += new ChangedEventHandler(Problem_Changed);
     }
 
     protected virtual void Problem_SolutionCreatorChanged(object sender, EventArgs e) { }
     protected virtual void Problem_EvaluatorChanged(object sender, EventArgs e) { }
-    private void Problem_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
-    }
     #endregion
   }
Index: /trunk/sources/HeuristicLab.Optimization/3.3/EngineAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/EngineAlgorithm.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/EngineAlgorithm.cs	(revision 2932)
@@ -195,5 +195,4 @@
       if (EngineChanged != null)
         EngineChanged(this, EventArgs.Empty);
-      OnChanged();
     }
 
@@ -202,5 +201,4 @@
     }
     private void RegisterEngineEvents() {
-      Engine.Changed += new ChangedEventHandler(Engine_Changed);
       Engine.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
       Engine.ExecutionTimeChanged += new EventHandler(Engine_ExecutionTimeChanged);
@@ -208,5 +206,4 @@
     }
     private void DeregisterEngineEvents() {
-      Engine.Changed -= new ChangedEventHandler(Engine_Changed);
       Engine.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
       Engine.ExecutionTimeChanged -= new EventHandler(Engine_ExecutionTimeChanged);
@@ -223,7 +220,4 @@
       OnStopped();
     }
-    private void Engine_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Parameters/3.3/LookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/LookupParameter.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/LookupParameter.cs	(revision 2932)
@@ -156,5 +156,5 @@
       if (ActualNameChanged != null)
         ActualNameChanged(this, EventArgs.Empty);
-      OnChanged();
+      OnToStringChanged();
     }
 
Index: /trunk/sources/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/OptionalConstrainedValueParameter.cs	(revision 2932)
@@ -50,9 +50,12 @@
         if (value != this.value) {
           if ((value != null) && !validValues.Contains(value)) throw new ArgumentException("Invalid value.");
+          if (this.value != null) this.value.ToStringChanged -= new EventHandler(Value_ToStringChanged);
           this.value = value;
+          if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged);
           OnValueChanged();
         }
       }
     }
+
     IItem IValueParameter.Value {
       get { return Value; }
@@ -121,5 +124,5 @@
       if (ValueChanged != null)
         ValueChanged(this, EventArgs.Empty);
-      OnChanged();
+      OnToStringChanged();
     }
 
@@ -129,5 +132,4 @@
         validValues.ItemsRemoved += new CollectionItemsChangedEventHandler<T>(ValidValues_ItemsRemoved);
         validValues.CollectionReset += new CollectionItemsChangedEventHandler<T>(ValidValues_CollectionReset);
-        validValues.Changed += new ChangedEventHandler(ValidValues_Changed);
       }
     }
@@ -138,5 +140,4 @@
         validValues.ItemsRemoved -= new CollectionItemsChangedEventHandler<T>(ValidValues_ItemsRemoved);
         validValues.CollectionReset -= new CollectionItemsChangedEventHandler<T>(ValidValues_CollectionReset);
-        validValues.Changed -= new ChangedEventHandler(ValidValues_Changed);
       }
     }
@@ -149,6 +150,6 @@
       if ((Value != null) && !validValues.Contains(Value)) Value = null;
     }
-    protected virtual void ValidValues_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
+    protected virtual void Value_ToStringChanged(object sender, EventArgs e) {
+      OnToStringChanged();
     }
   }
Index: /trunk/sources/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/OptionalValueParameter.cs	(revision 2932)
@@ -37,7 +37,7 @@
       set {
         if (value != this.value) {
-          if (this.value != null) this.value.Changed -= new ChangedEventHandler(Value_Changed);
+          if (this.value != null) this.value.ToStringChanged -= new EventHandler(Value_ToStringChanged);
           this.value = value;
-          if (this.value != null) this.value.Changed += new ChangedEventHandler(Value_Changed);
+          if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged);
           OnValueChanged();
         }
@@ -96,8 +96,8 @@
       if (ValueChanged != null)
         ValueChanged(this, EventArgs.Empty);
-      OnChanged();
+      OnToStringChanged();
     }
-    private void Value_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
+    private void Value_ToStringChanged(object sender, EventArgs e) {
+      OnToStringChanged();
     }
   }
Index: /trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 2931)
+++ /trunk/sources/HeuristicLab.Parameters/3.3/ValueLookupParameter.cs	(revision 2932)
@@ -37,7 +37,7 @@
       set {
         if (value != this.value) {
-          if (this.value != null) this.value.Changed -= new ChangedEventHandler(Value_Changed);
+          if (this.value != null) this.value.ToStringChanged -= new EventHandler(Value_ToStringChanged);
           this.value = value;
-          if (this.value != null) this.value.Changed += new ChangedEventHandler(Value_Changed);
+          if (this.value != null) this.value.ToStringChanged += new EventHandler(Value_ToStringChanged);
           OnValueChanged();
         }
@@ -89,8 +89,8 @@
       if (ValueChanged != null)
         ValueChanged(this, EventArgs.Empty);
-      OnChanged();
+      OnToStringChanged();
     }
-    private void Value_Changed(object sender, ChangedEventArgs e) {
-      OnChanged(e);
+    private void Value_ToStringChanged(object sender, EventArgs e) {
+      OnToStringChanged();
     }
   }
