Index: /trunk/sources/HeuristicLab.Common/3.3/Content/IStorableContent.cs
===================================================================
--- /trunk/sources/HeuristicLab.Common/3.3/Content/IStorableContent.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Common/3.3/Content/IStorableContent.cs	(revision 4419)
@@ -23,8 +23,6 @@
 
 namespace HeuristicLab.Common {
-  public interface IStorableContent : IContent, IDeepCloneable {
+  public interface IStorableContent : IContent {
     string Filename { get; set; }
-
-    event EventHandler FilenameChanged;
   }
 }
Index: unk/sources/HeuristicLab.Common/3.3/Content/StorableContent.cs
===================================================================
--- /trunk/sources/HeuristicLab.Common/3.3/Content/StorableContent.cs	(revision 4418)
+++ 	(revision )
@@ -1,48 +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;
-
-namespace HeuristicLab.Common {
-  public class StorableContent : DeepCloneable, IStorableContent {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
-    public StorableContent() {
-      filename = string.Empty;
-    }
-
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj	(revision 4418)
+++ /trunk/sources/HeuristicLab.Common/3.3/HeuristicLab.Common-3.3.csproj	(revision 4419)
@@ -116,5 +116,4 @@
     <Compile Include="Content\ContentManager.cs" />
     <Compile Include="Content\IStorableContent.cs" />
-    <Compile Include="Content\StorableContent.cs" />
     <Compile Include="DeepCloneable.cs" />
     <Compile Include="Content\IContent.cs" />
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemArray.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemArray.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemArray.cs	(revision 4419)
@@ -33,16 +33,4 @@
   [Item("ItemArray", "Represents an array of items.")]
   public class ItemArray<T> : ObservableArray<T>, IItemArray<T> where T : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -83,9 +71,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemCollection.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemCollection.cs	(revision 4419)
@@ -33,16 +33,4 @@
   [Item("ItemCollection", "Represents a collection of items.")]
   public class ItemCollection<T> : ObservableCollection<T>, IItemCollection<T> where T : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -82,9 +70,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemDictionary.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemDictionary.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemDictionary.cs	(revision 4419)
@@ -34,15 +34,4 @@
     where TKey : class, IItem
     where TValue : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
 
     public virtual string ItemName {
@@ -84,9 +73,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemList.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemList.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemList.cs	(revision 4419)
@@ -33,16 +33,4 @@
   [Item("ItemList", "Represents a list of items.")]
   public class ItemList<T> : ObservableList<T>, IItemList<T> where T : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -82,9 +70,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemSet.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemSet.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ItemSet.cs	(revision 4419)
@@ -33,16 +33,4 @@
   [Item("ItemSet", "Represents a set of items.")]
   public class ItemSet<T> : ObservableSet<T>, IItemSet<T> where T : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -81,9 +69,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/KeyedItemCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/KeyedItemCollection.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/KeyedItemCollection.cs	(revision 4419)
@@ -31,16 +31,4 @@
   [StorableClass]
   public abstract class KeyedItemCollection<TKey, TItem> : ObservableKeyedCollection<TKey, TItem>, IKeyedItemCollection<TKey, TItem> where TItem : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -83,9 +71,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/OperatorCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/OperatorCollection.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/OperatorCollection.cs	(revision 4419)
@@ -25,5 +25,4 @@
 namespace HeuristicLab.Core {
   [StorableClass]
-  [Creatable("Algorithm Design")]
   [Item("Operator Collection", "Represents a collection of operators.")]
   public class OperatorCollection : ItemCollection<IOperator> {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemArray.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemArray.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemArray.cs	(revision 4419)
@@ -31,16 +31,4 @@
   [Item("ReadOnlyItemArray", "Represents a read-only array of items.")]
   public class ReadOnlyItemArray<T> : ReadOnlyObservableArray<T>, IItemArray<T> where T : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -76,9 +64,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemCollection.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemCollection.cs	(revision 4419)
@@ -31,16 +31,4 @@
   [Item("ReadOnlyItemCollection", "Represents a read-only collection of items.")]
   public class ReadOnlyItemCollection<T> : ReadOnlyObservableCollection<T>, IItemCollection<T> where T : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -76,9 +64,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemDictionary.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemDictionary.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemDictionary.cs	(revision 4419)
@@ -33,15 +33,4 @@
     where TKey : class, IItem
     where TValue : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
 
     public virtual string ItemName {
@@ -78,9 +67,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemList.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemList.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemList.cs	(revision 4419)
@@ -31,16 +31,4 @@
   [Item("ReadOnlyItemList", "Represents a read-only list of items.")]
   public class ReadOnlyItemList<T> : ReadOnlyObservableList<T>, IItemList<T> where T : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -76,9 +64,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemSet.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemSet.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyItemSet.cs	(revision 4419)
@@ -31,16 +31,4 @@
   [Item("ReadOnlyItemSet", "Represents a read-only set of items.")]
   public class ReadOnlyItemSet<T> : ReadOnlyObservableSet<T>, IItemSet<T> where T : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -76,9 +64,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyKeyedItemCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyKeyedItemCollection.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Collections/ReadOnlyKeyedItemCollection.cs	(revision 4419)
@@ -31,16 +31,4 @@
   [Item("ReadOnlyKeyedItemCollection", "Represents a read-only keyed collection of items.")]
   public class ReadOnlyKeyedItemCollection<TKey, TItem> : ReadOnlyObservableKeyedCollection<TKey, TItem>, IKeyedItemCollection<TKey, TItem> where TItem : class, IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -76,9 +64,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs	(revision 4419)
@@ -28,5 +28,5 @@
   /// Interface to represent (almost) every HeuristicLab object (an object, an operator,...).
   /// </summary>
-  public interface IItem : IStorableContent {
+  public interface IItem : IContent, IDeepCloneable {
     string ItemName { get; }
     string ItemDescription { get; }
Index: /trunk/sources/HeuristicLab.Core/3.3/Item.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Item.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Item.cs	(revision 4419)
@@ -32,16 +32,4 @@
   [Item("Item", "Base class for all HeuristicLab items.")]
   public abstract class Item : IItem {
-    private string filename;
-    public string Filename {
-      get { return filename; }
-      set {
-        if (value == null) throw new ArgumentNullException();
-        if ((filename == null) || !filename.Equals(value)) {
-          filename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
     public virtual string ItemName {
       get { return ItemAttribute.GetName(this.GetType()); }
@@ -57,11 +45,7 @@
     }
 
-    protected Item() {
-      filename = string.Empty;
-    }
+    protected Item() { }
     [StorableConstructor]
-    protected Item(bool deserializing) {
-      filename = string.Empty;
-    }
+    protected Item(bool deserializing) { }
 
     public object Clone() {
@@ -82,9 +66,4 @@
     }
 
-    public event EventHandler FilenameChanged;
-    protected virtual void OnFilenameChanged() {
-      EventHandler handler = FilenameChanged;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
     public event EventHandler ItemImageChanged;
     protected virtual void OnItemImageChanged() {
Index: /trunk/sources/HeuristicLab.Core/3.3/Log.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Log.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/Log.cs	(revision 4419)
@@ -30,5 +30,7 @@
   [Item("Log", "A log for logging string messages.")]
   [StorableClass]
-  public class Log : Item, ILog {
+  public class Log : Item, ILog, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.File; }
Index: /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Core/3.3/OperatorGraph.cs	(revision 4419)
@@ -31,7 +31,8 @@
   /// </summary>
   [Item("Operator Graph", "Represents a graph of operators.")]
-  [Creatable("Algorithm Design")]
   [StorableClass]
-  public class OperatorGraph : Item {
+  public class OperatorGraph : Item, IStorableContent {
+    public string Filename { get; set; }
+
     [Storable]
     private OperatorSet operators;
Index: /trunk/sources/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/Tests/TestRandom.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/Tests/TestRandom.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Encodings.BinaryVectorEncoding/3.3/Tests/TestRandom.cs	(revision 4419)
@@ -138,17 +138,4 @@
 
     #endregion
-
-    #region IStorableContent Members
-
-    public string Filename {
-      get { throw new NotImplementedException(); }
-      set { throw new NotImplementedException(); }
-    }
-
-#pragma warning disable 67
-    public event EventHandler FilenameChanged;
-#pragma warning restore 67
-
-    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Tests/TestRandom.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Tests/TestRandom.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Tests/TestRandom.cs	(revision 4419)
@@ -138,17 +138,4 @@
 
     #endregion
-
-    #region IStorableContent Members
-
-    public string Filename {
-      get { throw new NotImplementedException(); }
-      set { throw new NotImplementedException(); }
-    }
-
-#pragma warning disable 67
-    public event EventHandler FilenameChanged;
-#pragma warning restore 67
-
-    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.Encodings.PermutationEncoding/3.3/Tests/Random.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.PermutationEncoding/3.3/Tests/Random.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Encodings.PermutationEncoding/3.3/Tests/Random.cs	(revision 4419)
@@ -138,17 +138,4 @@
 
     #endregion
-
-    #region IStorableContent Members
-
-    public string Filename {
-      get { throw new NotImplementedException(); }
-      set { throw new NotImplementedException(); }
-    }
-
-#pragma warning disable 67
-    public event EventHandler FilenameChanged;
-#pragma warning restore 67
-
-    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/Tests/TestRandom.cs
===================================================================
--- /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/Tests/TestRandom.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Encodings.RealVectorEncoding/3.3/Tests/TestRandom.cs	(revision 4419)
@@ -138,17 +138,4 @@
 
     #endregion
-
-    #region IStorableContent Members
-
-    public string Filename {
-      get { throw new NotImplementedException(); }
-      set { throw new NotImplementedException(); }
-    }
-
-#pragma warning disable 67
-    public event EventHandler FilenameChanged;
-#pragma warning restore 67
-
-    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperator.cs	(revision 4419)
@@ -41,7 +41,9 @@
   [Item("ProgrammableOperator", "An operator that can be programmed for arbitrary needs.")]
   [StorableClass]
-  public class ProgrammableOperator : Operator, IParameterizedNamedItem {
+  public class ProgrammableOperator : Operator, IParameterizedNamedItem, IStorableContent {
 
     #region Fields & Properties
+
+    public string Filename { get; set; }
 
     public new ParameterCollection Parameters {
Index: /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperator.cs	(revision 4419)
@@ -20,4 +20,5 @@
 #endregion
 
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -29,5 +30,7 @@
   [Item("CombinedOperator", "An operator which contains an operator graph.")]
   [StorableClass]
-  public sealed class CombinedOperator : AlgorithmOperator, IParameterizedItem {
+  public sealed class CombinedOperator : AlgorithmOperator, IParameterizedItem, IStorableContent {
+    public string Filename { get; set; }
+
     public override bool CanChangeDescription {
       get { return true; }
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Algorithm.cs	(revision 4419)
@@ -35,5 +35,7 @@
   [Item("Algorithm", "A base class for algorithms.")]
   [StorableClass]
-  public abstract class Algorithm : ParameterizedNamedItem, IAlgorithm {
+  public abstract class Algorithm : ParameterizedNamedItem, IAlgorithm, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get {
Index: /trunk/sources/HeuristicLab.Optimization/3.3/BatchRun.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/BatchRun.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/BatchRun.cs	(revision 4419)
@@ -36,5 +36,7 @@
   [Creatable("Testing & Analysis")]
   [StorableClass]
-  public sealed class BatchRun : NamedItem, IOptimizer {
+  public sealed class BatchRun : NamedItem, IOptimizer, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get {
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Experiment.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Experiment.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Experiment.cs	(revision 4419)
@@ -35,5 +35,7 @@
   [Creatable("Testing & Analysis")]
   [StorableClass]
-  public sealed class Experiment : NamedItem, IOptimizer {
+  public sealed class Experiment : NamedItem, IOptimizer, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get {
Index: /trunk/sources/HeuristicLab.Optimization/3.3/OptimizerList.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/OptimizerList.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/OptimizerList.cs	(revision 4419)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -26,5 +27,4 @@
 namespace HeuristicLab.Optimization {
   [Item("Optimizer List", "Represents a list of optimizers.")]
-  [Creatable("Testing & Analysis")]
   [StorableClass]
   public class OptimizerList : ItemList<IOptimizer> {
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Result.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Result.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Result.cs	(revision 4419)
@@ -32,5 +32,7 @@
   [Item("Result", "A result which has a name and a data type and holds an IItem.")]
   [StorableClass]
-  public sealed class Result : NamedItem, IResult {
+  public sealed class Result : NamedItem, IResult, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get {
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Run.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Run.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Run.cs	(revision 4419)
@@ -33,5 +33,7 @@
   [Item("Run", "The parameters and results of an algorithm run.")]
   [StorableClass]
-  public sealed class Run : NamedItem, IRun {
+  public sealed class Run : NamedItem, IRun, IStorableContent {
+    public string Filename { get; set; }
+
     [StorableConstructor]
     private Run(bool deserializing) : base(deserializing) { }
Index: /trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs	(revision 4419)
@@ -33,5 +33,7 @@
   [Creatable("Testing & Analysis")]
   [StorableClass]
-  public class RunCollection : ItemCollection<IRun>, IStringConvertibleMatrix {
+  public class RunCollection : ItemCollection<IRun>, IStringConvertibleMatrix, IStorableContent {
+    public string Filename { get; set; }
+
     [StorableConstructor]
     protected RunCollection(bool deserializing) : base(deserializing) { }
Index: /trunk/sources/HeuristicLab.Optimization/3.3/UserDefinedProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/UserDefinedProblem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/UserDefinedProblem.cs	(revision 4419)
@@ -38,5 +38,7 @@
   [Creatable("Problems")]
   [StorableClass]
-  public sealed class UserDefinedProblem : ParameterizedNamedItem, ISingleObjectiveProblem {
+  public sealed class UserDefinedProblem : ParameterizedNamedItem, ISingleObjectiveProblem, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
Index: /trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.3/ArtificialAntProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.3/ArtificialAntProblem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Problems.ArtificialAnt/3.3/ArtificialAntProblem.cs	(revision 4419)
@@ -41,5 +41,6 @@
   [Creatable("Problems")]
   [StorableClass]
-  public sealed class ArtificialAntProblem : ParameterizedNamedItem, ISingleObjectiveProblem {
+  public sealed class ArtificialAntProblem : ParameterizedNamedItem, ISingleObjectiveProblem, IStorableContent {
+    public string Filename { get; set; }
 
     public override Image ItemImage {
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/DataAnalysisProblem.cs	(revision 4419)
@@ -33,6 +33,9 @@
   [Creatable("Problems")]
   [StorableClass]
-  public class DataAnalysisProblem : ParameterizedNamedItem, IDataAnalysisProblem {
+  public class DataAnalysisProblem : ParameterizedNamedItem, IDataAnalysisProblem, IStorableContent {
     private const string DataAnalysisProblemDataParameterName = "DataAnalysisProblemData";
+
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
Index: /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/ExternalEvaluationProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/ExternalEvaluationProblem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Problems.ExternalEvaluation/3.3/ExternalEvaluationProblem.cs	(revision 4419)
@@ -38,8 +38,11 @@
   [Creatable("Problems")]
   [StorableClass]
-  public sealed class ExternalEvaluationProblem : ParameterizedNamedItem, ISingleObjectiveProblem {
+  public sealed class ExternalEvaluationProblem : ParameterizedNamedItem, ISingleObjectiveProblem, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
     }
+
     public new ParameterCollection Parameters {
       get { return base.Parameters; }
Index: /trunk/sources/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Problems.Knapsack/3.3/KnapsackProblem.cs	(revision 4419)
@@ -37,5 +37,7 @@
   [Creatable("Problems")]
   [StorableClass]
-  public sealed class KnapsackProblem : ParameterizedNamedItem, ISingleObjectiveProblem {
+  public sealed class KnapsackProblem : ParameterizedNamedItem, ISingleObjectiveProblem, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
Index: /trunk/sources/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Problems.OneMax/3.3/OnemaxProblem.cs	(revision 4419)
@@ -37,5 +37,7 @@
   [Creatable("Problems")]
   [StorableClass]
-  public sealed class OneMaxProblem : ParameterizedNamedItem, ISingleObjectiveProblem {
+  public sealed class OneMaxProblem : ParameterizedNamedItem, ISingleObjectiveProblem, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
Index: /trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Problems.TestFunctions/3.3/SingleObjectiveTestFunctionProblem.cs	(revision 4419)
@@ -37,5 +37,7 @@
   [StorableClass]
   [Creatable("Problems")]
-  public sealed class SingleObjectiveTestFunctionProblem : ParameterizedNamedItem, ISingleObjectiveProblem {
+  public sealed class SingleObjectiveTestFunctionProblem : ParameterizedNamedItem, ISingleObjectiveProblem, IStorableContent {
+    public string Filename { get; set; }
+
     [Storable]
     private StdDevStrategyVectorCreator strategyVectorCreator;
Index: /trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Problems.TravelingSalesman/3.3/TravelingSalesmanProblem.cs	(revision 4419)
@@ -38,5 +38,7 @@
   [Creatable("Problems")]
   [StorableClass]
-  public sealed class TravelingSalesmanProblem : ParameterizedNamedItem, ISingleObjectiveProblem {
+  public sealed class TravelingSalesmanProblem : ParameterizedNamedItem, ISingleObjectiveProblem, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
Index: /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs	(revision 4418)
+++ /trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs	(revision 4419)
@@ -40,5 +40,7 @@
   [Creatable("Problems")]
   [StorableClass]
-  public sealed class VehicleRoutingProblem : ParameterizedNamedItem, ISingleObjectiveProblem {
+  public sealed class VehicleRoutingProblem : ParameterizedNamedItem, ISingleObjectiveProblem, IStorableContent {
+    public string Filename { get; set; }
+
     public override Image ItemImage {
       get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Type; }
