Index: /trunk/sources/HeuristicLab.Persistence/Default/Decomposers/X2StringDecomposer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/Default/Decomposers/X2StringDecomposer.cs	(revision 1476)
+++ /trunk/sources/HeuristicLab.Persistence/Default/Decomposers/X2StringDecomposer.cs	(revision 1476)
@@ -0,0 +1,123 @@
+﻿using System;
+using HeuristicLab.Persistence.Interfaces;
+using HeuristicLab.Persistence.Core;
+using System.Collections.Generic;
+
+namespace HeuristicLab.Persistence.Default.Decomposers {
+  
+  public class Int2StringDecomposer : IDecomposer {
+
+    public bool CanDecompose(Type type) {
+      return type == typeof (int);
+    }
+
+    public IEnumerable<Tag> DeCompose(object obj) {
+      yield return new Tag(obj.ToString());
+    }
+
+    public object CreateInstance(Type type) {
+      return null;
+    }
+
+    public object Populate(object instance, IEnumerable<Tag> tags, Type type) {
+      foreach ( Tag tag in tags ) {
+        return int.Parse((string) tag.Value);
+      }
+      throw new ApplicationException("Not enough components to compose an integer.");
+    }
+    
+  }
+
+  public class Long2StringDecomposer : IDecomposer {
+
+    public bool CanDecompose(Type type) {
+      return type == typeof(long);
+    }
+
+    public IEnumerable<Tag> DeCompose(object obj) {
+      yield return new Tag(obj.ToString());
+    }
+
+    public object CreateInstance(Type type) {
+      return null;
+    }
+
+    public object Populate(object instance, IEnumerable<Tag> tags, Type type) {
+      foreach (Tag tag in tags) {
+        return long.Parse((string)tag.Value);
+      }
+      throw new ApplicationException("Not enough components to compose an integer.");
+    }
+
+  }
+
+  public class Double2StringDecomposer : IDecomposer {
+
+    public bool CanDecompose(Type type) {
+      return type == typeof (double);
+    }
+
+    public IEnumerable<Tag> DeCompose(object obj) {
+      yield return new Tag(((double)obj).ToString("r"));
+    }
+
+    public object CreateInstance(Type type) {
+      return null;
+    }
+
+    public object Populate(object instance, IEnumerable<Tag> tags, Type type) {
+      foreach (Tag tag in tags) {
+        return double.Parse((string)tag.Value);
+      }
+      throw new ApplicationException("Not enough components to compose a double.");
+    }
+
+  }
+
+  public class Bool2StringDecomposer : IDecomposer {
+
+    public bool CanDecompose(Type type) {
+      return type == typeof(bool);
+    }
+
+    public IEnumerable<Tag> DeCompose(object obj) {
+      yield return new Tag(obj.ToString());
+    }
+
+    public object CreateInstance(Type type) {
+      return null;
+    }
+
+    public object Populate(object instance, IEnumerable<Tag> tags, Type type) {
+      foreach (Tag tag in tags) {
+        return bool.Parse((string) tag.Value);
+      }
+      throw new ApplicationException("Not enough components to compose a bool.");
+    }
+
+  }
+
+  public class DateTime2StringDecomposer : IDecomposer {
+
+    public bool CanDecompose(Type type) {
+      return type == typeof(DateTime);
+    }
+
+    public IEnumerable<Tag> DeCompose(object obj) {
+      yield return new Tag(((DateTime)obj).Ticks);
+    }
+
+    public object CreateInstance(Type type) {
+      return null;
+    }
+
+    public object Populate(object instance, IEnumerable<Tag> tags, Type type) {
+      foreach (Tag tag in tags) {
+        return new DateTime((long)tag.Value);
+      }
+      throw new ApplicationException("Not enough components to compose a bool.");
+    }
+
+  }  
+
+}
Index: /trunk/sources/HeuristicLab.Persistence/Default/ViewOnly/ViewOnlyFormat.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/Default/ViewOnly/ViewOnlyFormat.cs	(revision 1475)
+++ /trunk/sources/HeuristicLab.Persistence/Default/ViewOnly/ViewOnlyFormat.cs	(revision 1476)
@@ -45,23 +45,4 @@
     public override Type Type { get { return typeof(Type); } }
   }
-
-  //public class ToStringDecomposer : IDecomposer {
-  // should not be used by default
-  public class ToStringDecomposer {
-    public bool CanDecompose(Type type) { return true; }
-    public IEnumerable<Tag> DeCompose(object obj) {
-      yield return new Tag(obj.ToString());
-    }
-
-    public object CreateInstance(Type type) {
-      throw new NotImplementedException();
-    }
-
-    public object Populate(object instance, IEnumerable<Tag> tags, Type type) {
-      throw new NotImplementedException();
-    }
-
-  }
-
 
   public class ViewOnlyGenerator : Generator<string> {
Index: /trunk/sources/HeuristicLab.Persistence/Default/Xml/Primitive/String2XmlFormatter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/Default/Xml/Primitive/String2XmlFormatter.cs	(revision 1476)
+++ /trunk/sources/HeuristicLab.Persistence/Default/Xml/Primitive/String2XmlFormatter.cs	(revision 1476)
@@ -0,0 +1,30 @@
+﻿using System;
+using System.Text;
+using HeuristicLab.Persistence.Core;
+using HeuristicLab.Persistence.Interfaces;
+
+namespace HeuristicLab.Persistence.Default.Xml.Primitive {
+
+  [EmptyStorableClass]
+  public class String2XmlFormatter : IFormatter {
+
+    public Type Type { get { return typeof(string); } }
+    public IFormat Format { get { return XmlFormat.Instance;  } }
+
+    public object DoFormat(object o) {      
+      return "<![CDATA[" +
+        ((string)o).Replace("]]>", "]]]]><![CDATA[>") +
+        "]]>";
+    }
+
+    public object Parse(object o) {
+      StringBuilder sb = new StringBuilder();
+      foreach (string s in ((string)o).Split(
+        new[] { "<![CDATA[", "]]>" },
+        StringSplitOptions.RemoveEmptyEntries)) {
+        sb.Append(s);
+      }
+      return sb.ToString();
+    }
+  }  
+}
Index: /trunk/sources/HeuristicLab.Persistence/Default/Xml/XmlGenerator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/Default/Xml/XmlGenerator.cs	(revision 1475)
+++ /trunk/sources/HeuristicLab.Persistence/Default/Xml/XmlGenerator.cs	(revision 1476)
@@ -6,4 +6,6 @@
 using System.IO;
 using ICSharpCode.SharpZipLib.Zip;
+using HeuristicLab.Tracing;
+using log4net;
 
 namespace HeuristicLab.Persistence.Default.Xml {
@@ -145,11 +147,17 @@
       zipStream.PutNextEntry(new ZipEntry("data.xml"));      
       StreamWriter writer = new StreamWriter(zipStream);
-      foreach ( ISerializationToken token in serializer )
-        writer.Write(generator.Format(token));
+      ILog logger = Logger.GetDefaultLogger();      
+      foreach (ISerializationToken token in serializer) {
+        string line = generator.Format(token);
+        writer.Write(line);
+        logger.Debug(line);
+      }
       writer.Flush();
       zipStream.PutNextEntry(new ZipEntry("typecache.xml"));
       writer = new StreamWriter(zipStream);
-      foreach ( string line in generator.Format(serializer.TypeCache))
+      foreach (string line in generator.Format(serializer.TypeCache)) {
         writer.WriteLine(line);
+        logger.Debug(line);
+      }
       writer.Flush();            
       zipStream.Close();      
Index: /trunk/sources/HeuristicLab.Persistence/HeuristicLab.Persistence.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/HeuristicLab.Persistence.csproj	(revision 1475)
+++ /trunk/sources/HeuristicLab.Persistence/HeuristicLab.Persistence.csproj	(revision 1476)
@@ -80,4 +80,8 @@
       <HintPath>..\HeuristicLab.PluginInfrastructure.GUI\ICSharpCode.SharpZipLib.dll</HintPath>
     </Reference>
+    <Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\HeuristicLab.Tracing\libs\debug\log4net.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.configuration" />
@@ -99,4 +103,5 @@
     <Compile Include="Default\Decomposers\StorableDecomposer.cs" />
     <Compile Include="Default\Decomposers\TypeDecomposer.cs" />
+    <Compile Include="Default\Decomposers\X2StringDecomposer.cs" />
     <Compile Include="Default\ViewOnly\ViewOnlyFormat.cs" />
     <Compile Include="Default\Xml\Compact\IntArray2XmlFormatters.cs" />
@@ -107,5 +112,5 @@
     <Compile Include="Core\DataMemberAccessor.cs" />
     <Compile Include="Default\Xml\Compact\IntList2XmlFormatter.cs" />
-    <Compile Include="Default\Xml\Primitive\Sting2XmlFormatter.cs" />
+    <Compile Include="Default\Xml\Primitive\String2XmlFormatter.cs" />
     <Compile Include="Default\Xml\Primitive\Int2XmlFormatter.cs" />
     <Compile Include="Default\Xml\Primitive\Double2XmlFormatter.cs" />
