Index: trunk/sources/HeuristicLab.Common/3.2/Content/Content.cs
===================================================================
--- trunk/sources/HeuristicLab.Common/3.2/Content/Content.cs	(revision 3437)
+++ 	(revision )
@@ -1,29 +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.Linq;
-using System.Text;
-
-namespace HeuristicLab.Common {
-  public class Content : DeepCloneable, IContent { }
-}
Index: trunk/sources/HeuristicLab.Common/3.2/Content/ContentManager.cs
===================================================================
--- trunk/sources/HeuristicLab.Common/3.2/Content/ContentManager.cs	(revision 3437)
+++ trunk/sources/HeuristicLab.Common/3.2/Content/ContentManager.cs	(revision 3483)
@@ -21,71 +21,62 @@
 
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
 
 namespace HeuristicLab.Common {
   public abstract class ContentManager {
-    protected ContentManager() {
+    private static ContentManager instance;
+
+    public static void Initialize(ContentManager manager) {
+      if (manager == null) throw new ArgumentNullException();
+      if (ContentManager.instance != null) throw new InvalidOperationException("ContentManager has already been initialized.");
+      ContentManager.instance = manager;
     }
 
-    private static ContentManager instance;
-    public static ContentManager Instance {
-      get { return instance; }
+    protected ContentManager() { }
+
+    public static IStorableContent Load(string filename) {
+      if (instance == null) throw new InvalidOperationException("ContentManager is not initialized.");
+      IStorableContent content = instance.LoadContent(filename);
+      content.Filename = filename;
+      return content;
     }
-    public static void CreateInstance<T>() where T : ContentManager {
-      if (instance != null)
-        throw new InvalidOperationException("ContentManager was already created.");
-      instance = Activator.CreateInstance<T>();
+    public static void LoadAsync(string filename, Action<IStorableContent, Exception> loadingCompletedCallback) {
+      if (instance == null) throw new InvalidOperationException("ContentManager is not initialized.");
+      var func = new Func<string, IStorableContent>(instance.LoadContent);
+      func.BeginInvoke(filename, delegate(IAsyncResult result) {
+        Exception error = null;
+        IStorableContent content = null;
+        try {
+          content = func.EndInvoke(result);
+          content.Filename = filename;
+        }
+        catch (Exception ex) {
+          error = ex;
+        }
+        loadingCompletedCallback(content, error);
+      }, null);
     }
+    protected abstract IStorableContent LoadContent(string filename);
 
-    public static void Save(IStorableContent content) {
-      content.Save();
+    public static void Save(IStorableContent content, string filename, bool compressed) {
+      if (instance == null) throw new InvalidOperationException("ContentManager is not initialized.");
+      instance.SaveContent(content, filename, compressed);
+      content.Filename = filename;
     }
-    public static void Save(IStorableContent content, string filename) {
-      content.Save(filename);
+    public static void SaveAsync(IStorableContent content, string filename, bool compressed, Action<IStorableContent, Exception> savingCompletedCallback) {
+      if (instance == null) throw new InvalidOperationException("ContentManager is not initialized.");
+      var action = new Action<IStorableContent, string, bool>(instance.SaveContent);
+      action.BeginInvoke(content, filename, compressed, delegate(IAsyncResult result) {
+        Exception error = null;
+        try {
+          action.EndInvoke(result);
+          content.Filename = filename;
+        }
+        catch (Exception ex) {
+          error = ex;
+        }
+        savingCompletedCallback(content, error);
+      }, null);
     }
-
-    protected abstract void Load(string filename, bool flag);
-    public static void Load(string filename) {
-      if (instance == null)
-        throw new InvalidOperationException("ContentManager must be created before access is allowed.");
-
-      Exception ex = null;
-      instance.OnLoadOperationStarted();
-      try {
-        instance.Load(filename, false);
-      }
-      catch (Exception e) {
-        ex = e;
-      }
-      instance.OnLoadOperationFinished(ex);
-    }
-
-    public static void LoadAsynchronous(string filename) {
-      if (instance == null)
-        throw new InvalidOperationException("ContentManager must be created before access is allowed.");
-
-      ThreadPool.QueueUserWorkItem(
-        new WaitCallback(delegate(object arg) {
-        Load(filename);
-      })
-      );
-    }
-    
-
-    public event EventHandler LoadOperationStarted;
-    protected virtual void OnLoadOperationStarted() {
-      EventHandler handler = LoadOperationStarted;
-      if (handler != null)
-        handler(this, EventArgs.Empty);
-    }
-    public event EventHandler<EventArgs<Exception>> LoadOperationFinished;
-    protected virtual void OnLoadOperationFinished(Exception e) {
-      EventHandler<EventArgs<Exception>> handler = LoadOperationFinished;
-      if (handler != null)
-        handler(this, new EventArgs<Exception>(e));
-    }
+    protected abstract void SaveContent(IStorableContent content, string filename, bool compressed);
   }
 }
Index: trunk/sources/HeuristicLab.Common/3.2/Content/IContent.cs
===================================================================
--- trunk/sources/HeuristicLab.Common/3.2/Content/IContent.cs	(revision 3437)
+++ trunk/sources/HeuristicLab.Common/3.2/Content/IContent.cs	(revision 3483)
@@ -20,10 +20,5 @@
 #endregion
 
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
 namespace HeuristicLab.Common {
-  public interface IContent : IDeepCloneable { }
+  public interface IContent { }
 }
Index: trunk/sources/HeuristicLab.Common/3.2/Content/IStorableContent.cs
===================================================================
--- trunk/sources/HeuristicLab.Common/3.2/Content/IStorableContent.cs	(revision 3437)
+++ trunk/sources/HeuristicLab.Common/3.2/Content/IStorableContent.cs	(revision 3483)
@@ -21,7 +21,4 @@
 
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 
 namespace HeuristicLab.Common {
@@ -29,12 +26,5 @@
     string Filename { get; set; }
 
-    void Save();
-    void Save(string filename);
-    void SaveAsynchronous();
-    void SaveAsynchronous(string filename);
-
     event EventHandler FilenameChanged;
-    event EventHandler SaveOperationStarted;
-    event EventHandler<EventArgs<Exception>> SaveOperationFinished;
   }
 }
Index: trunk/sources/HeuristicLab.Common/3.2/Content/StorableContent.cs
===================================================================
--- trunk/sources/HeuristicLab.Common/3.2/Content/StorableContent.cs	(revision 3437)
+++ trunk/sources/HeuristicLab.Common/3.2/Content/StorableContent.cs	(revision 3483)
@@ -21,64 +21,20 @@
 
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Reflection;
 
 namespace HeuristicLab.Common {
-  public abstract class StorableContent : Content, IStorableContent {
-    public StorableContent()
-      : base() {
-      this.filename = string.Empty;
-    }
-    public StorableContent(string filename)
-      : base() {
-      this.Filename = filename;
-    }
-
+  public class StorableContent : IStorableContent {
     private string filename;
     public string Filename {
-      get { return this.filename; }
+      get { return filename; }
       set {
-        if (this.filename != value) {
-          this.filename = value;
-          this.OnFilenameChanged();
+        if (!filename.Equals(value)) {
+          filename = value;
+          OnFilenameChanged();
         }
       }
     }
 
-    protected abstract void Save();
-    void IStorableContent.Save() {
-      this.OnSaveOperationStarted();
-      Exception ex = null;
-      try {
-        this.Save();
-      }
-      catch (Exception e) {
-        ex = e;
-      }
-      this.OnSaveOperationFinished(ex);
-    }
-    public void Save(string filename) {
-      this.Filename = filename;
-      ((IStorableContent)this).Save();
-    }
-
-    protected virtual void SaveAsnychronous() {
-      ThreadPool.QueueUserWorkItem(
-        new WaitCallback(delegate(object arg) {
-        this.Save();
-      })
-      );
-    }
-    void IStorableContent.SaveAsynchronous() {
-      this.OnSaveOperationStarted();
-      this.SaveAsnychronous();
-      this.OnSaveOperationFinished(null);
-    }
-    public void SaveAsynchronous(string filename) {
-      this.Filename = filename;
-      ((IStorableContent)this).SaveAsynchronous();
+    public StorableContent() {
+      filename = string.Empty;
     }
 
@@ -88,14 +44,4 @@
       if (handler != null) handler(this, EventArgs.Empty);
     }
-    public event EventHandler SaveOperationStarted;
-    protected virtual void OnSaveOperationStarted() {
-      EventHandler handler = SaveOperationStarted;
-      if (handler != null) handler(this, EventArgs.Empty);
-    }
-    public event EventHandler<EventArgs<Exception>> SaveOperationFinished;
-    protected virtual void OnSaveOperationFinished(Exception ex) {
-      EventHandler<EventArgs<Exception>> handler = SaveOperationFinished;
-      if (handler != null) handler(this, new EventArgs<Exception>(ex));
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Common/3.2/HeuristicLab.Common-3.2.csproj
===================================================================
--- trunk/sources/HeuristicLab.Common/3.2/HeuristicLab.Common-3.2.csproj	(revision 3437)
+++ trunk/sources/HeuristicLab.Common/3.2/HeuristicLab.Common-3.2.csproj	(revision 3483)
@@ -89,5 +89,4 @@
     <None Include="HeuristicLabCommonPlugin.cs.frame" />
     <Compile Include="Cloner.cs" />
-    <Compile Include="Content\Content.cs" />
     <Compile Include="Content\ContentManager.cs" />
     <Compile Include="Content\IContent.cs" />
