Index: trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeLoader.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeLoader.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeLoader.cs	(revision 3004)
@@ -10,5 +10,5 @@
 namespace HeuristicLab.Persistence.Auxiliary {
 
-  public class TypeLoader {
+  internal class TypeLoader {
 
     public static Type Load(string typeNameString) {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeName.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeName.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeName.cs	(revision 3004)
@@ -4,15 +4,36 @@
 using System.Reflection.Emit;
 using System.Collections.Generic;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Persistence.Auxiliary {
   
+  /// <summary>
+  /// Contains a more modular representation of type names that can
+  /// be used to compare versions and ignore extended assembly
+  /// attributes.
+  /// </summary>
+  [StorableClass(StorableClassType.MarkedOnly)]
   public class TypeName {
+
+    [Storable]
     public string Namespace { get; private set; }
+
+    [Storable]
     public string ClassName { get; private set; }
+
+    [Storable]
     public List<TypeName> GenericArgs { get; internal set; }
     public bool IsGeneric { get { return GenericArgs.Count > 0; } }
+
+    [Storable]
     public string MemoryMagic { get; internal set; }
+
+    [Storable]
     public string AssemblyName { get; internal set; }
+
+    [Storable]
     public Dictionary<string, string> AssemblyAttribues { get; internal set; }
+
+    [Storable]
     public bool IsReference { get; internal set; }
 
@@ -25,9 +46,12 @@
     }
 
+    /// <param name="full">include assembly properties and generic parameters</param>    
     public string ToString(bool full) {
       return ToString(full, true);
     }
 
-    public string ToString(bool full, bool includeAssembly) {
+
+    /// <param name="full">include assembly properties and generic parameters</param>    
+    public string ToString(bool full, bool includeAssembly) {      
       StringBuilder sb = new StringBuilder();
       if (!string.IsNullOrEmpty(Namespace))
@@ -60,16 +84,21 @@
     }
 
-    public bool IsNewerThan(TypeName t) {
+
+    /// <summary>
+    /// Lexicographically compare version information and make sure type and assembly
+    /// names are identical. This function recursively checks generic type arguments.
+    /// </summary>    
+    public bool IsNewerThan(TypeName typeName) {
       try {
-        if (this.ClassName != t.ClassName ||
-          this.Namespace != t.Namespace ||
-          this.AssemblyName != t.AssemblyName)
+        if (this.ClassName != typeName.ClassName ||
+          this.Namespace != typeName.Namespace ||
+          this.AssemblyName != typeName.AssemblyName)
           throw new Exception("Cannot compare versions of different types");
         if (CompareVersions(
           this.AssemblyAttribues["Version"],
-          t.AssemblyAttribues["Version"]) > 0)
+          typeName.AssemblyAttribues["Version"]) > 0)
           return true;
         IEnumerator<TypeName> thisIt = this.GenericArgs.GetEnumerator();
-        IEnumerator<TypeName> tIt = t.GenericArgs.GetEnumerator();
+        IEnumerator<TypeName> tIt = typeName.GenericArgs.GetEnumerator();
         while (thisIt.MoveNext()) {
           tIt.MoveNext();
@@ -83,17 +112,22 @@
     }
 
-    public bool IsCompatible(TypeName t) {
+
+    /// <summary>
+    /// Make sure major and minor version number are identical. This function
+    /// recursively checks generic type arguments.
+    /// </summary>
+    public bool IsCompatible(TypeName typeName) {
       try {
-        if (this.ClassName != t.ClassName ||
-          this.Namespace != t.Namespace ||
-          this.AssemblyName != t.AssemblyName)
+        if (this.ClassName != typeName.ClassName ||
+          this.Namespace != typeName.Namespace ||
+          this.AssemblyName != typeName.AssemblyName)
           throw new Exception("Cannot compare versions of different types");
         Version thisVersion = new Version(this.AssemblyAttribues["Version"]);
-        Version tVersion = new Version(t.AssemblyAttribues["Version"]);
+        Version tVersion = new Version(typeName.AssemblyAttribues["Version"]);
         if (thisVersion.Major != tVersion.Major ||
           thisVersion.Minor != tVersion.Minor)
           return false;
         IEnumerator<TypeName> thisIt = this.GenericArgs.GetEnumerator();
-        IEnumerator<TypeName> tIt = t.GenericArgs.GetEnumerator();
+        IEnumerator<TypeName> tIt = typeName.GenericArgs.GetEnumerator();
         while (thisIt.MoveNext()) {
           tIt.MoveNext();
Index: trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeNameParser.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeNameParser.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeNameParser.cs	(revision 3004)
@@ -11,4 +11,39 @@
   }
 
+
+  /// <summary>
+  /// Parse a .NET type name using the following grammar:  
+  ///   
+  /// <para><code>
+  /// TypeSpec := SimpleTypeSpec '&amp;'?  
+  /// </code></para>
+  /// 
+  /// <para><code>
+  /// SimpleTypeSpec := (IDENTIFIER '.')*
+  ///                   (IDENTIFIER '+')*
+  ///                    IDENTIFIER
+  ///                   ( '`\d+[' Generics ']' )?
+  ///                   (\*|\[(\d+\.\.\d+|\d+\.\.\.|(|\*)(,(|\*))*)\])* 
+  ///                   (',\s*' IDENTIFIER (',\s*' AssemblyProperty)* )?  
+  /// </code></para>
+  ///
+  /// <para><code>
+  /// Generics := '[' SimpleTypeSpec ']' (',[' SimpleTypeSpec ']')
+  /// </code></para>
+  ///
+  /// <para><code>
+  /// AssemblyProperty := 'Version=' Version
+  ///                  |  'PublicKey(Token)?=[a-fA-F0-9]+'
+  ///                  |  'Culture=[a-zA-F0-9]+'
+  /// </code></para>
+  ///
+  /// <para><code>
+  /// Version := \d+\.\d+\.\d+\.\d+
+  /// </code></para>
+  ///
+  /// <para><code>
+  /// IDENTIFIER = [_a-zA-Z][_a-ZA-Z0-9]*  
+  /// </code></para>
+  /// </summary>
   public class TypeNameParser {
 
@@ -35,5 +70,5 @@
 
 
-    class Token {
+    private class Token {
       private static Dictionary<string, string> tokens =
         new Dictionary<string, string> {
@@ -68,5 +103,5 @@
         }
       }
-      public static IEnumerable<Token> Tokenize(string s) {
+      public static IEnumerable<Token> Tokenize(string s) {        
         int pos = 0;
         foreach (Match m in TokenRegex.Matches(s)) {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Configuration.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Configuration.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Configuration.cs	(revision 3004)
@@ -6,4 +6,9 @@
 namespace HeuristicLab.Persistence.Core {
 
+  /// <summary>
+  /// Defines the set of primitive and composite serializers that are to be used
+  /// for a certain seraial format. The configuration can be obtained from the
+  /// <code>ConfigurationService</code>.
+  /// </summary>
   [StorableClass(StorableClassType.MarkedOnly)]    
   public class Configuration {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 3004)
@@ -13,10 +13,29 @@
 namespace HeuristicLab.Persistence.Core {
 
+  /// <summary>
+  /// Provides a persistable configuration of primitive and composite serializers for
+  /// all registered serial formats. Custom formats can be defined and will be saved
+  /// for future sessions. A default configuration can be generated through reflection.
+  /// 
+  /// This class has only a single instance.
+  /// </summary>
   public class ConfigurationService {
 
     private static ConfigurationService instance;
     private readonly Dictionary<IFormat, Configuration> customConfigurations;
+
+    /// <summary>
+    /// List of all available primitive serializers.
+    /// </summary>
     public Dictionary<Type, List<IPrimitiveSerializer>> PrimitiveSerializers { get; private set; }
+
+    /// <summary>
+    /// List of all available composite serializers (discovered through reflection).
+    /// </summary>
     public List<ICompositeSerializer> CompositeSerializers { get; private set; }
+
+    /// <summary>
+    /// List of all available formats (discovered through reflection).    
+    /// </summary>
     public List<IFormat> Formats { get; private set; }
 
@@ -92,4 +111,8 @@
     }
 
+
+    /// <summary>
+    /// Rediscover available serializers and discard all custom configurations.
+    /// </summary>
     public void Reset() {
       customConfigurations.Clear();
@@ -108,5 +131,5 @@
     }
 
-    class PriortiySorter : IComparer<ICompositeSerializer> {
+    private class PriortiySorter : IComparer<ICompositeSerializer> {
       public int Compare(ICompositeSerializer x, ICompositeSerializer y) {
         return y.Priority - x.Priority;
@@ -169,4 +192,7 @@
     }
 
+    /// <summary>
+    /// Get the default (automatically discovered) configuration for a certain format.
+    /// </summary>    
     public Configuration GetDefaultConfig(IFormat format) {
       Dictionary<Type, IPrimitiveSerializer> primitiveConfig = new Dictionary<Type, IPrimitiveSerializer>();
@@ -188,4 +214,9 @@
     }
 
+
+    /// <summary>
+    /// Get a configuration for a certain format. This returns a custom configuration
+    /// if defined, otherwise returns the default (automatically discovered) configuration.
+    /// </summary>    
     public Configuration GetConfiguration(IFormat format) {
       if (customConfigurations.ContainsKey(format))
@@ -194,4 +225,7 @@
     }
 
+    /// <summary>
+    /// Define a new custom configuration for a ceratin format.
+    /// </summary>    
     public void DefineConfiguration(Configuration configuration) {
       customConfigurations[configuration.Format] = configuration;
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/DeSerializer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/DeSerializer.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/DeSerializer.cs	(revision 3004)
@@ -9,7 +9,15 @@
 namespace HeuristicLab.Persistence.Core {
 
+  /// <summary>
+  /// Core hub for deserialization. Reads the serialization token stream,
+  /// instantiates objects and fills in values.
+  /// </summary>
   public class Deserializer {
 
-    class Midwife {
+    /// <summary>
+    /// Helps in delivering the class instance and acts as proxy while
+    /// the object cannot yet be instantiate.
+    /// </summary>
+    private class Midwife {
 
       public int? Id { get; private set; }
@@ -53,5 +61,5 @@
       }
     }
-
+    
     private readonly Dictionary<int, object> id2obj;
     private readonly Dictionary<Type, object> serializerMapping;
@@ -59,4 +67,9 @@
     private readonly Dictionary<int, Type> typeIds;
 
+    /// <summary>
+    /// Instantiates a new deserializer with the given type cache,
+    /// that contains information about the serializers to use
+    /// for every type and their type ids.
+    /// </summary>    
     public Deserializer(
       IEnumerable<TypeMapping> typeCache) {
@@ -92,5 +105,7 @@
     }
 
-
+    /// <summary>
+    /// Process the token stream and deserialize an instantate a new object graph.
+    /// </summary>    
     public object Deserialize(IEnumerable<ISerializationToken> tokens) {
       foreach (ISerializationToken token in tokens) {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/FormatBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/FormatBase.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/FormatBase.cs	(revision 3004)
@@ -4,11 +4,21 @@
 namespace HeuristicLab.Persistence.Interfaces {
 
+  /// <summary>
+  /// Common base class for defining a new serialization format.
+  /// </summary>  
   [StorableClass(StorableClassType.Empty)]
   public abstract class FormatBase<SerialDataFormat> : IFormat<SerialDataFormat> where SerialDataFormat : ISerialData {
-
+    
     public abstract string Name { get; }
 
+    
+    /// <summary>
+    /// Datatype that describes the atoms used for serialization serialization.
+    /// </summary>
     public Type SerialDataType { get { return typeof(SerialDataFormat); } }
 
+    /// <summary>
+    /// Compares formats by name.
+    /// </summary>    
     public bool Equals(FormatBase<SerialDataFormat> f) {
       if (f == null)
@@ -17,4 +27,7 @@
     }
 
+    /// <summary>
+    /// Compares foramts by name.
+    /// </summary>
     public override bool Equals(object obj) {
       FormatBase<SerialDataFormat> f = obj as FormatBase<SerialDataFormat>;
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/GeneratorBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/GeneratorBase.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/GeneratorBase.cs	(revision 3004)
@@ -11,4 +11,9 @@
 namespace HeuristicLab.Persistence.Core {
 
+  /// <summary>
+  /// Base class for serialization generators. Provides a common entry point
+  /// <code>Format</code> and dispatches to different abstract methods for
+  /// every token type.
+  /// </summary>  
   public abstract class GeneratorBase<T> {
 
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/PrimitiveSerializerBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/PrimitiveSerializerBase.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/PrimitiveSerializerBase.cs	(revision 3004)
@@ -5,4 +5,8 @@
 namespace HeuristicLab.Persistence.Interfaces {
 
+  /// <summary>
+  /// Base class for primitive serializers. These are serializers that map
+  /// directly to a single datatype and directly produce a serializable object.
+  /// </summary>
   [StorableClass(StorableClassType.Empty)]
   public abstract class PrimitiveSerializerBase<Source, SerialData> :
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs	(revision 3004)
@@ -13,7 +13,20 @@
 namespace HeuristicLab.Persistence.Core {
 
+  /// <summary>
+  /// The core hub for serialization. This class transforms an object graph
+  /// into a tree and later into a stream of serialization tokens using
+  /// the given configuration.
+  /// 
+  /// <para>Primitive serializers directly format an object to a serializable type.</para>
+  /// 
+  /// <para>Composite serializers decompose an object into other object that are then
+  /// recursively serialized.</para>  
+  /// 
+  /// A constructed serializer is enumerable and continuously analyses
+  /// and traverses the object graph while the enumerator is iterated
+  /// </summary>  
   public class Serializer : IEnumerable<ISerializationToken> {
 
-    class ReferenceEqualityComparer : IEqualityComparer<object> {
+    private class ReferenceEqualityComparer : IEqualityComparer<object> {
 
       public new bool Equals(object a, object b) {
@@ -37,4 +50,7 @@
     private readonly List<Exception> exceptions;
 
+    /// <summary>
+    /// Contains a mapping of type id to type and serializer.
+    /// </summary>
     public List<TypeMapping> TypeCache {
       get {
@@ -43,5 +59,9 @@
       }
     }
-
+    
+    /// <summary>
+    /// Contains a list of files (mostly assemblies) that are
+    /// necessary to deserialize the object graph again.    
+    /// </summary>
     public List<string> RequiredFiles {
       get {
@@ -76,5 +96,5 @@
       requiredFiles = new List<string>(files.Keys);
     }
-
+    
     public Serializer(object obj, Configuration configuration) :
       this(obj, configuration, "ROOT") { }
@@ -83,4 +103,6 @@
       : this(obj, configuration, rootName, false) { }
 
+    /// <param name="isTestRun">Try to complete the whole object graph,
+    /// don't stop at the first exception</param>
     public Serializer(object obj, Configuration configuration, string rootName, bool isTestRun) {
       this.obj = obj;
@@ -106,5 +128,5 @@
     }
 
-    public IEnumerator<ISerializationToken> AddExceptionCompiler(IEnumerator<ISerializationToken> enumerator) {
+    private IEnumerator<ISerializationToken> AddExceptionCompiler(IEnumerator<ISerializationToken> enumerator) {
       while (enumerator.MoveNext())
         yield return enumerator.Current;
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Tag.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Tag.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Tag.cs	(revision 3004)
@@ -3,4 +3,8 @@
 namespace HeuristicLab.Persistence.Core {
 
+  /// <summary>
+  /// Vehicle used inside the serialization/deserizalisation process
+  /// between composite serializers and the core.
+  /// </summary>  
   public class Tag {
     public string Name { get; private set; }
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/BeginToken.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/BeginToken.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/BeginToken.cs	(revision 3004)
@@ -3,4 +3,8 @@
 namespace HeuristicLab.Persistence.Core.Tokens {
 
+
+  /// <summary>
+  /// Marks the beginning of a composite element.
+  /// </summary>
   public class BeginToken : CompositeTokenBase {
     public BeginToken(string name, int typeId, int? id) : base(name, typeId, id) { }
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/CompositeTokenBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/CompositeTokenBase.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/CompositeTokenBase.cs	(revision 3004)
@@ -2,4 +2,8 @@
 namespace HeuristicLab.Persistence.Core.Tokens {
 
+  /// <summary>
+  /// Common base class of <code>BeginToken</code> and <code>EndToken</code>
+  /// that surround a composite element.
+  /// </summary>
   public abstract class CompositeTokenBase : SerializationTokenBase {
     public readonly int TypeId;
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/EndToken.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/EndToken.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/EndToken.cs	(revision 3004)
@@ -3,4 +3,7 @@
 namespace HeuristicLab.Persistence.Core.Tokens {
 
+  /// <summary>
+  /// Marks the end of a composite element.
+  /// </summary>
   public class EndToken : CompositeTokenBase {
     public EndToken(string name, int typeId, int? id) : base(name, typeId, id) { }
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/MetaInfoBeginToken.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/MetaInfoBeginToken.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/MetaInfoBeginToken.cs	(revision 3004)
@@ -2,5 +2,5 @@
 
 namespace HeuristicLab.Persistence.Core.Tokens {
-
+  
   public class MetaInfoBeginToken : ISerializationToken { }
 
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/NulLReferenceToken.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/NulLReferenceToken.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/NulLReferenceToken.cs	(revision 3004)
@@ -2,5 +2,5 @@
 
 namespace HeuristicLab.Persistence.Core.Tokens {
-
+  
   public class NullReferenceToken : SerializationTokenBase {
     public NullReferenceToken(string name) : base(name) { }
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/PrimitiveToken.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/PrimitiveToken.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/PrimitiveToken.cs	(revision 3004)
@@ -3,4 +3,7 @@
 namespace HeuristicLab.Persistence.Core.Tokens {
 
+  /// <summary>
+  /// Encapsulated the serialization of a single primitive value.
+  /// </summary>
   public class PrimitiveToken : SerializationTokenBase {
     public readonly int TypeId;
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/ReferenceToken.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/ReferenceToken.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/ReferenceToken.cs	(revision 3004)
@@ -3,4 +3,8 @@
 namespace HeuristicLab.Persistence.Core.Tokens {
 
+
+  /// <summary>
+  /// References a previously used token (composite or primitive).
+  /// </summary>
   public class ReferenceToken : SerializationTokenBase {
     public readonly int Id;
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/SerializationTokenBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/SerializationTokenBase.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/Tokens/SerializationTokenBase.cs	(revision 3004)
@@ -4,5 +4,5 @@
 
 namespace HeuristicLab.Persistence.Core.Tokens {
-
+  
   public abstract class SerializationTokenBase : ISerializationToken {
     public readonly string Name;
Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/TypeMapping.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/TypeMapping.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/TypeMapping.cs	(revision 3004)
@@ -3,4 +3,7 @@
 namespace HeuristicLab.Persistence.Core {
 
+  /// <summary>
+  /// Association of id, type name and serializer
+  /// </summary>
   public class TypeMapping {
 
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/DataMemberAccessor.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/DataMemberAccessor.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/DataMemberAccessor.cs	(revision 3004)
@@ -5,4 +5,9 @@
 namespace HeuristicLab.Persistence.Default.CompositeSerializers.Storable {
 
+  /// <summary>
+  /// Encapsulation and abstraction for access a data member of an object
+  /// regardless of it being a property or field. Addicionally a
+  /// default value and an alternate name can be specified.
+  /// </summary>
   public class DataMemberAccessor {
 
@@ -12,4 +17,8 @@
     public readonly object DefaultValue;
 
+
+    /// <summary>
+    /// Create a DataMemberAccessor from a FieldInfo or PropertyInfo for the give object.
+    /// </summary>
     public DataMemberAccessor(MemberInfo memberInfo, string name, object defaultvalue, object obj) {
       Name = name;
@@ -33,4 +42,7 @@
     }
 
+    /// <summary>
+    /// Wrap existing getter and setter functions.
+    /// </summary>
     public DataMemberAccessor(string name, object defaultValue,
         Func<object> getter, Action<object> setter) {
@@ -40,5 +52,9 @@
       Set = setter;
     }
-
+    
+    /// <summary>
+    /// Create an empty accessor that just encapsulates an object
+    /// without access.
+    /// </summary>
     public DataMemberAccessor(object o) {
       Name = null;
@@ -48,4 +64,8 @@
     }
 
+    /// <summary>
+    /// Create an empty accessor that just encapsulates an object
+    /// without access.
+    /// </summary>
     public DataMemberAccessor(object o, string name) {
       Name = name;
@@ -54,5 +74,4 @@
       Set = null;
     }
-
 
     public override string ToString() {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/System.Drawing/Bitmap2XmlSerializer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/System.Drawing/Bitmap2XmlSerializer.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/System.Drawing/Bitmap2XmlSerializer.cs	(revision 3004)
@@ -11,10 +11,9 @@
 
 namespace HeuristicLab.Persistence.Default.Xml.Primitive {
-  public class Bitmap2XmlSerializer :PrimitiveXmlSerializerBase<Bitmap>{
-    private static Regex re = new Regex(@"<!\[CDATA\[((?:[^]]|\](?!\]>))*)\]\]>", RegexOptions.Singleline);
+  public class Bitmap2XmlSerializer : PrimitiveXmlSerializerBase<Bitmap> {
 
     public override XmlString Format(Bitmap o) {
       MemoryStream stream = new MemoryStream();
-      o.Save(stream,ImageFormat.Png);
+      o.Save(stream, ImageFormat.Png);
       byte[] array = stream.ToArray();
       Byte1DArray2XmlSerializer serializer = new Byte1DArray2XmlSerializer();
@@ -32,5 +31,5 @@
       Bitmap bitmap = new Bitmap(stream);
       return bitmap;
-  }
+    }
   }
 }
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlGenerator.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlGenerator.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/XmlGenerator.cs	(revision 3004)
@@ -11,4 +11,9 @@
 namespace HeuristicLab.Persistence.Default.Xml {
 
+
+  /// <summary>
+  /// Main entry point of persistence to XML. Use the static methods to serialize
+  /// to a file or to a stream.
+  /// </summary>
   public class XmlGenerator : GeneratorBase<string> {
 
@@ -155,11 +160,26 @@
     }
 
+    /// <summary>
+    /// Serialize an object into a file.
+    /// 
+    /// The XML configuration is obtained from the <code>ConfigurationService</code>.
+    /// The file is actually a ZIP file.
+    /// Compression level is set to 5 and needed assemblies are not included.
+    /// </summary>    
     public static void Serialize(object o, string filename) {
-      Serialize(o, filename, ConfigurationService.Instance.GetDefaultConfig(new XmlFormat()), false, 5);
-    }
-
+      Serialize(o, filename, ConfigurationService.Instance.GetConfiguration(new XmlFormat()), false, 5);
+    }
+
+    /// <summary>
+    /// Serialize an object into a file.
+    /// 
+    /// The XML configuration is obtained from the <code>ConfigurationService</code>.
+    /// Needed assemblies are not included.
+    /// </summary>
+    /// <param name="compression">ZIP file compression level</param>
     public static void Serialize(object o, string filename, int compression) {
       Serialize(o, filename, ConfigurationService.Instance.GetConfiguration(new XmlFormat()), false, compression);
     }
+
 
     public static void Serialize(object obj, string filename, Configuration config) {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Interfaces/ISerialData.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Interfaces/ISerialData.cs	(revision 3003)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Interfaces/ISerialData.cs	(revision 3004)
@@ -2,5 +2,4 @@
 
 namespace HeuristicLab.Persistence.Interfaces {
-
 
   /// <summary>
