Index: /trunk/sources/HeuristicLab.Persistence.GUI/3.3/HeuristicLabPersistenceGUIPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence.GUI/3.3/HeuristicLabPersistenceGUIPlugin.cs	(revision 2736)
+++ /trunk/sources/HeuristicLab.Persistence.GUI/3.3/HeuristicLabPersistenceGUIPlugin.cs	(revision 2737)
@@ -7,9 +7,9 @@
   [PluginFile("HeuristicLab.Persistence.GUI-3.3.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Persistence-3.3")]
-  public class HeuristicLabPersistencePlugin : PluginBase { }
+  public class HeuristicLabPersistenceGUIPlugin : PluginBase { }
 
 
   [Application("Persistence Configuration")]
-  public class HeuristicLabPersistenceApplication : ApplicationBase {
+  public class HeuristicLabPersistenceGUIApplication : ApplicationBase {
     public override void Run() {
       Application.EnableVisualStyles();
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeNameParser.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeNameParser.cs	(revision 2736)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Auxiliary/TypeNameParser.cs	(revision 2737)
@@ -31,5 +31,5 @@
       Version := '\d+\.\d+\.\d+\.\d+)'
 
-      IDENTIFIER = [a-zA-Z][a-ZA-Z0-9]*
+      IDENTIFIER = [_a-zA-Z][_a-ZA-Z0-9]*
     */
 
@@ -38,7 +38,7 @@
       private static Dictionary<string, string> tokens =
         new Dictionary<string, string> {
+          {"-", "DASH"},
           {"&", "AMPERSAND"},
           {".", "DOT"},
-          {"-", "DASH"},
           {"+", "PLUS"},
           {",", "COMMA"},
@@ -50,5 +50,5 @@
           {"`", "BACKTICK"} };
       private static Regex NumberRegex = new Regex("^\\d+$");
-      private static Regex TokenRegex = new Regex("[-&.+,\\[\\]* =`]|\\d+|[a-zA-Z][a-zA-Z0-9]*");
+      private static Regex TokenRegex = new Regex("[-&.+,\\[\\]* =`]|\\d+|[_a-zA-Z][_a-zA-Z0-9]*");
       public string Name { get; private set; }
       public string Value { get; private set; }
Index: /trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs	(revision 2736)
+++ /trunk/sources/HeuristicLab.Persistence/3.3/Core/Serializer.cs	(revision 2737)
@@ -53,5 +53,5 @@
     private List<TypeMapping> externalTypeCache;
     private List<string> requiredFiles;
-    private void BuildTypeCache() {      
+    private void BuildTypeCache() {
       externalTypeCache = new List<TypeMapping>();
       Dictionary<Assembly, bool> assemblies = new Dictionary<Assembly, bool>();
@@ -84,5 +84,4 @@
 
     public Serializer(object obj, Configuration configuration, string rootName, bool isTestRun) {
-    
       this.obj = obj;
       this.rootName = rootName;
@@ -174,12 +173,14 @@
       yield return new BeginToken(name, typeId, id);
       bool first = true;
-      foreach (var tag in metaInfo) {
-        IEnumerator<ISerializationToken> metaIt = Serialize(new DataMemberAccessor(tag.Value, tag.Name));
-        while (metaIt.MoveNext()) {
-          if (first) {
-            yield return new MetaInfoBeginToken();
-            first = false;
+      if (metaInfo != null) {
+        foreach (var tag in metaInfo) {
+          IEnumerator<ISerializationToken> metaIt = Serialize(new DataMemberAccessor(tag.Value, tag.Name));
+          while (metaIt.MoveNext()) {
+            if (first) {
+              yield return new MetaInfoBeginToken();
+              first = false;
+            }
+            yield return metaIt.Current;
           }
-          yield return metaIt.Current;
         }
       }
@@ -187,8 +188,10 @@
         yield return new MetaInfoEndToken();
       }
-      foreach (var tag in tags) {
-        IEnumerator<ISerializationToken> it = Serialize(new DataMemberAccessor(tag.Value, tag.Name));
-        while (it.MoveNext())
-          yield return it.Current;
+      if (tags != null) {
+        foreach (var tag in tags) {
+          IEnumerator<ISerializationToken> it = Serialize(new DataMemberAccessor(tag.Value, tag.Name));
+          while (it.MoveNext())
+            yield return it.Current;
+        }
       }
       yield return new EndToken(name, typeId, id);
