Index: trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 6342)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Core/ConfigurationService.cs	(revision 6356)
@@ -42,4 +42,5 @@
 
     private static ConfigurationService instance;
+    private static object locker = new object();
     private readonly Dictionary<IFormat, Configuration> customConfigurations;
 
@@ -65,7 +66,9 @@
     public static ConfigurationService Instance {
       get {
-        if (instance == null)
-          instance = new ConfigurationService();
-        return instance;
+        lock (locker) {
+          if (instance == null)
+            instance = new ConfigurationService();
+          return instance;
+        }
       }
     }
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs	(revision 6342)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/NumberEnumerable2StringSerializer.cs	(revision 6356)
@@ -46,17 +46,20 @@
 
     private static readonly Dictionary<Type, Type> interfaceCache = new Dictionary<Type, Type>();
+    private static readonly object locker = new object();
 
     public Type GetGenericEnumerableInterface(Type type) {
-      if (interfaceCache.ContainsKey(type))
-        return interfaceCache[type];
-      foreach (Type iface in type.GetInterfaces()) {
-        if (iface.IsGenericType &&
-          iface.GetGenericTypeDefinition() == typeof(IEnumerable<>) &&
-          numberConverter.CanSerialize(iface.GetGenericArguments()[0])) {
-          interfaceCache.Add(type, iface);
-          return iface;
+      lock (locker) {
+        if (interfaceCache.ContainsKey(type))
+          return interfaceCache[type];
+        foreach (Type iface in type.GetInterfaces()) {
+          if (iface.IsGenericType &&
+            iface.GetGenericTypeDefinition() == typeof(IEnumerable<>) &&
+            numberConverter.CanSerialize(iface.GetGenericArguments()[0])) {
+            interfaceCache.Add(type, iface);
+            return iface;
+          }
         }
+        interfaceCache.Add(type, null);
       }
-      interfaceCache.Add(type, null);
       return null;
     }
Index: trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableReflection.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableReflection.cs	(revision 6342)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Default/CompositeSerializers/Storable/StorableReflection.cs	(revision 6356)
@@ -124,6 +124,5 @@
     /// <param name="storableMemberInfos"></param>
     /// <returns></returns>
-    private static IEnumerable<StorableMemberInfo> DisentangleNameMapping(
-        IEnumerable<StorableMemberInfo> storableMemberInfos) {
+    private static IEnumerable<StorableMemberInfo> DisentangleNameMapping(IEnumerable<StorableMemberInfo> storableMemberInfos) {
       var nameGrouping = new Dictionary<string, List<StorableMemberInfo>>();
       foreach (StorableMemberInfo storable in storableMemberInfos) {
Index: trunk/sources/HeuristicLab.Persistence/3.3/Tests/HeuristicLab.Persistence-3.3.Tests.csproj
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Tests/HeuristicLab.Persistence-3.3.Tests.csproj	(revision 6342)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Tests/HeuristicLab.Persistence-3.3.Tests.csproj	(revision 6356)
@@ -107,4 +107,8 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\..\HeuristicLab.Algorithms.GeneticAlgorithm\3.3\HeuristicLab.Algorithms.GeneticAlgorithm-3.3.csproj">
+      <Project>{A51DA44F-CB35-4F6F-99F5-2A2E904AB93B}</Project>
+      <Name>HeuristicLab.Algorithms.GeneticAlgorithm-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\HeuristicLab.Persistence-3.3.csproj">
       <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
Index: trunk/sources/HeuristicLab.Persistence/3.3/Tests/UseCases.cs
===================================================================
--- trunk/sources/HeuristicLab.Persistence/3.3/Tests/UseCases.cs	(revision 6342)
+++ trunk/sources/HeuristicLab.Persistence/3.3/Tests/UseCases.cs	(revision 6356)
@@ -39,4 +39,6 @@
 using HeuristicLab.Persistence.Interfaces;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System.Threading.Tasks;
+using HeuristicLab.Algorithms.GeneticAlgorithm;
 
 namespace HeuristicLab.Persistence_33.Tests {
@@ -1271,5 +1273,19 @@
     }
 
-
+    [TestMethod]
+    public void ConcurrencyTest() {
+      int n = 20;
+      Task[] tasks = new Task[n];
+      for (int i = 0; i < n; i++) {
+        tasks[i] = Task.Factory.StartNew((idx) => {
+          byte[] data;
+          using(var stream = new MemoryStream()) {
+            XmlGenerator.Serialize(new GeneticAlgorithm(), stream);
+            data = stream.ToArray();
+          }
+        }, i);
+      }
+      Task.WaitAll(tasks);
+    }
 
     [ClassInitialize]
