Index: /trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 1643)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 1644)
@@ -1,4 +1,5 @@
 ﻿using System;
 using System.IO;
+using System.Linq;
 using System.Collections.Generic;
 using System.Reflection;
@@ -159,5 +160,5 @@
           format.SerialDataType.VersionInvariantName()));
       }
-      return new Configuration(format, formatterConfig, Decomposers);
+      return new Configuration(format, formatterConfig, Decomposers.Where((d) => d.Priority > 0));
     }
 
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/CompactNumberArray2StringDecomposer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/CompactNumberArray2StringDecomposer.cs	(revision 1643)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/CompactNumberArray2StringDecomposer.cs	(revision 1644)
@@ -17,6 +17,6 @@
     }
 
-    private static readonly Number2StringConverter numberConverter =
-      new Number2StringConverter();
+    private static readonly Number2StringDecomposer numberConverter =
+      new Number2StringDecomposer();
 
     public bool CanDecompose(Type type) {
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Number2StringConverter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Number2StringConverter.cs	(revision 1643)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/Number2StringConverter.cs	(revision 1644)
@@ -9,5 +9,5 @@
 namespace HeuristicLab.Persistence.Default.Decomposers {
 
-  public class Number2StringConverter {
+  public class Number2StringDecomposer : IDecomposer {
 
     private static readonly List<Type> numberTypes =
@@ -29,5 +29,5 @@
     private static readonly Dictionary<Type, MethodInfo> numberParsers;
 
-    static Number2StringConverter() {
+    static Number2StringDecomposer() {
       numberParsers = new Dictionary<Type, MethodInfo>();
       foreach (var type in numberTypes) {
@@ -65,4 +65,39 @@
     }
 
+
+    #region IDecomposer Members
+
+    public int Priority {
+      get { return -100; }
+    }
+
+    public IEnumerable<Tag> CreateMetaInfo(object obj) {
+      yield return new Tag(Format(obj));
+    }
+
+    public IEnumerable<Tag> Decompose(object obj) {
+      // numbers are composed just of meta info
+      return new Tag[] { };
+    }
+
+    public object CreateInstance(Type type, IEnumerable<Tag> metaInfo) {
+      var it = metaInfo.GetEnumerator();
+      try {
+        it.MoveNext();
+        return Parse((string)it.Current.Value, type);
+      } catch (InvalidOperationException e) {
+        throw new PersistenceException(
+          String.Format("Insufficient meta information to reconstruct number of type {0}.",
+          type.VersionInvariantName()), e);
+      } catch (InvalidCastException e) {
+        throw new PersistenceException("Invalid meta information element type", e);
+      }
+    }
+
+    public void Populate(object instance, IEnumerable<Tag> tags, Type type) {
+      // numbers are composed just of meta info, no need to populate
+    }
+
+    #endregion
   }
 
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/NumberEnumerable2StringDecomposer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/NumberEnumerable2StringDecomposer.cs	(revision 1643)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Default/Decomposers/NumberEnumerable2StringDecomposer.cs	(revision 1644)
@@ -17,6 +17,6 @@
     }
 
-    private static readonly Number2StringConverter numberConverter =
-      new Number2StringConverter();
+    private static readonly Number2StringDecomposer numberConverter =
+      new Number2StringDecomposer();
 
     private static readonly Dictionary<Type, Type> interfaceCache = new Dictionary<Type, Type>();
Index: /trunk/sources/HeuristicLab.Persistence/UnitTests/UseCases.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/UnitTests/UseCases.cs	(revision 1643)
+++ /trunk/sources/HeuristicLab.Persistence/UnitTests/UseCases.cs	(revision 1644)
@@ -11,4 +11,7 @@
 using System.Reflection;
 using HeuristicLab.Persistence.Default.Decomposers.Storable;
+using HeuristicLab.Persistence.Interfaces;
+using HeuristicLab.Persistence.Default.Xml.Primitive;
+using HeuristicLab.Persistence.Default.Decomposers;
 
 namespace HeuristicLab.Persistence.UnitTest {
@@ -312,4 +315,17 @@
     }
 
+    [TestMethod]
+    public void Number2StringDecomposer() {
+      PrimitivesTest sdt = new PrimitivesTest();
+      XmlGenerator.Serialize(sdt, tempFile,
+        new Configuration(new XmlFormat(),
+          new Dictionary<Type, IFormatter> { { typeof(string), new String2XmlFormatter() } },
+          new List<IDecomposer> { new Number2StringDecomposer() }));
+      object o = XmlParser.DeSerialize(tempFile);      
+      Assert.AreEqual(
+        DebugStringGenerator.Serialize(sdt),
+        DebugStringGenerator.Serialize(o));
+    }
+
 
     [ClassInitialize]
