diff --git a/alib2data/src/alphabet/SymbolFromXMLParser.h b/alib2data/src/alphabet/SymbolFromXMLParser.h
index 3d337b147a6fc99988e76e1a2bca4ace3eb1d3dd..9195c91fdd20b6225c69d5069561502212392205 100644
--- a/alib2data/src/alphabet/SymbolFromXMLParser.h
+++ b/alib2data/src/alphabet/SymbolFromXMLParser.h
@@ -56,7 +56,7 @@ namespace alib {
 
 class ObjectFromXMLParser;
 
-} /* namespace grammar */
+} /* namespace object */
 
 namespace alphabet {
 
diff --git a/alib2data/src/automaton/AutomatonFromXMLParser.h b/alib2data/src/automaton/AutomatonFromXMLParser.h
index 58416fefb53b36bf1944a6fa0936956d19c5a7d0..dd2123f3bb3b43a5142d17f07fd001683513323f 100644
--- a/alib2data/src/automaton/AutomatonFromXMLParser.h
+++ b/alib2data/src/automaton/AutomatonFromXMLParser.h
@@ -33,6 +33,12 @@ struct api;
 
 } /* namespace alib */
 
+namespace alib {
+
+class ObjectFromXMLParser;
+
+} /* namespace alib */
+
 namespace automaton {
 
 /**
@@ -95,6 +101,8 @@ class AutomatonFromXMLParser : public sax::FromXMLParserHelper {
 	SinglePopNPDA parseSinglePopNPDA(std::list<sax::Token>& input) const;
 	OneTapeDTM parseOneTapeDTM(std::list<sax::Token>& input) const;
 
+	friend class alib::ObjectFromXMLParser;
+
 	template<typename T> friend class alib::api;
 public:
 	bool first(std::list<sax::Token>& input) const;
diff --git a/alib2data/src/container/ContainerFromXMLParser.hpp b/alib2data/src/container/ContainerFromXMLParser.hpp
index d6717b6d36be89bee9cb1e7f29622fc2d04e4979..44f56c797bedf6d0edd196cb2f0d2cedf1bcc063 100644
--- a/alib2data/src/container/ContainerFromXMLParser.hpp
+++ b/alib2data/src/container/ContainerFromXMLParser.hpp
@@ -19,6 +19,12 @@ struct api;
 
 } /* namespace alib */
 
+namespace alib {
+
+class ObjectFromXMLParser;
+
+} /* namespace alib */
+
 namespace container {
 
 /**
@@ -31,6 +37,8 @@ public:
 	template<typename T>
 	std::set<T> parseSet(std::list<sax::Token>& input) const;
 
+	friend class alib::ObjectFromXMLParser;
+
 	template<typename T> friend class alib::api;
 };
 
diff --git a/alib2data/src/exception/ExceptionFromXMLParser.h b/alib2data/src/exception/ExceptionFromXMLParser.h
index ce3eb59114f6a659285e4869c98802bb59d807af..904e7c2f80aa290d1c81437780b644538833cc3d 100644
--- a/alib2data/src/exception/ExceptionFromXMLParser.h
+++ b/alib2data/src/exception/ExceptionFromXMLParser.h
@@ -25,7 +25,7 @@ namespace alib {
 
 class ObjectFromXMLParser;
 
-}
+} /* namespace alib */
 
 namespace exception {
 
diff --git a/alib2data/src/grammar/GrammarFromXMLParser.h b/alib2data/src/grammar/GrammarFromXMLParser.h
index b0d63f7ad9ab185dc900a5fdb477e0c2249b2bde..d1def31f874e2e246b2ad26c16f5e2e231a9424c 100644
--- a/alib2data/src/grammar/GrammarFromXMLParser.h
+++ b/alib2data/src/grammar/GrammarFromXMLParser.h
@@ -38,6 +38,12 @@ struct api;
 
 } /* namespace alib */
 
+namespace alib {
+
+class ObjectFromXMLParser;
+
+} /* namespace alib */
+
 namespace grammar {
 
 /**
@@ -93,6 +99,8 @@ class GrammarFromXMLParser : public sax::FromXMLParserHelper {
 	LeftRG parseLeftRG(std::list<sax::Token>& input) const;
 	LeftLG parseLeftLG(std::list<sax::Token>& input) const;
 
+	friend class alib::ObjectFromXMLParser;
+
 	template<typename T> friend class alib::api;
 public:
 	bool first(std::list<sax::Token>& input) const;
diff --git a/alib2data/src/label/LabelFromXMLParser.h b/alib2data/src/label/LabelFromXMLParser.h
index 8f3f27c3d8cadd9d1efc08eb12acab1d8e01fe65..df213bc8c0751efc75f138e9906f1a13e9a50027 100644
--- a/alib2data/src/label/LabelFromXMLParser.h
+++ b/alib2data/src/label/LabelFromXMLParser.h
@@ -38,6 +38,12 @@ class AutomatonFromXMLParser;
 
 } /* namespace automaton */
 
+namespace alib {
+
+class ObjectFromXMLParser;
+
+} /* namespace alib */
+
 namespace label {
 
 /**
@@ -52,8 +58,8 @@ class LabelFromXMLParser : public sax::FromXMLParserHelper {
 	StringLabel parseStringLabel(std::list<sax::Token>& input) const;
 
 	friend class alphabet::SymbolFromXMLParser;
-
 	friend class automaton::AutomatonFromXMLParser;
+	friend class alib::ObjectFromXMLParser;
 
 	template<typename T> friend class alib::api;
 public:
diff --git a/alib2data/src/object/ObjectFromXMLParser.cpp b/alib2data/src/object/ObjectFromXMLParser.cpp
index 07e5dab7395c145702b88a27a19567facffa8bd3..662f31b3ff78e9958399a54071581f14dd239921 100644
--- a/alib2data/src/object/ObjectFromXMLParser.cpp
+++ b/alib2data/src/object/ObjectFromXMLParser.cpp
@@ -23,6 +23,21 @@ Object ObjectFromXMLParser::parseObject(std::list<sax::Token>& input) const {
 	} else if(alib::FromXMLParsers::exceptionParser.first(input)) {
 		exception::AlibException exception = alib::FromXMLParsers::exceptionParser.parseException(input);
 		tmp = std::move(exception).plunder();
+	} else if(alib::FromXMLParsers::labelParser.first(input)) {
+		label::Label label = alib::FromXMLParsers::labelParser.parseLabel(input);
+		tmp = std::move(label.getData()).plunder();
+	} else if(alib::FromXMLParsers::regexpParser.first(input)) {
+		regexp::RegExp regexp = alib::FromXMLParsers::regexpParser.parseRegExp(input);
+		tmp = std::move(regexp.getData()).plunder();
+	} else if(alib::FromXMLParsers::stringParser.first(input)) {
+		string::String string = alib::FromXMLParsers::stringParser.parseString(input);
+		tmp = std::move(string.getData()).plunder();
+	} else if(alib::FromXMLParsers::automatonParser.first(input)) {
+		automaton::Automaton automaton = alib::FromXMLParsers::automatonParser.parseAutomaton(input);
+		tmp = std::move(automaton.getData()).plunder();
+	} else if(alib::FromXMLParsers::grammarParser.first(input)) {
+		grammar::Grammar grammar = alib::FromXMLParsers::grammarParser.parseGrammar(input);
+		tmp = std::move(grammar.getData()).plunder();
 	} else {
 		throw exception::AlibException("Unknown element in xml");
 	}
diff --git a/alib2data/src/regexp/RegExpFromXMLParser.h b/alib2data/src/regexp/RegExpFromXMLParser.h
index 90779c709cca2907667d4f22829980e203bb1a4a..38f821267bde65293b7e27e360f5420cd19fcc65 100644
--- a/alib2data/src/regexp/RegExpFromXMLParser.h
+++ b/alib2data/src/regexp/RegExpFromXMLParser.h
@@ -29,6 +29,12 @@ class AutomatonFromXMLParser;
 
 } /* namespace automaton */
 
+namespace alib {
+
+class ObjectFromXMLParser;
+
+} /* namespace alib */
+
 namespace regexp {
 
 /**
@@ -61,6 +67,7 @@ class RegExpFromXMLParser : public sax::FromXMLParserHelper {
 	FormalRegExp parseFormalRegExp(std::list<sax::Token>& input) const;
 
 	friend class automaton::AutomatonFromXMLParser;
+	friend class alib::ObjectFromXMLParser;
 
 	template<typename T> friend class alib::api;
 public:
diff --git a/alib2data/src/string/StringFromXMLParser.h b/alib2data/src/string/StringFromXMLParser.h
index 9ccf9dbfbed589d6f4efbc453453f17d39a3297b..c00242a5ed225848cc46d5e2fae385d76ee95151 100644
--- a/alib2data/src/string/StringFromXMLParser.h
+++ b/alib2data/src/string/StringFromXMLParser.h
@@ -32,6 +32,12 @@ class AutomatonFromXMLParser;
 
 } /* namespace automaton */
 
+namespace alib {
+
+class ObjectFromXMLParser;
+
+} /* namespace alib */
+
 namespace string {
 
 /**
@@ -49,6 +55,7 @@ class StringFromXMLParser : public sax::FromXMLParserHelper {
 	Epsilon parseEpsilon(std::list<sax::Token>& input) const;
 
 	friend class automaton::AutomatonFromXMLParser;
+	friend class alib::ObjectFromXMLParser;
 
 	template<typename T> friend class alib::api;
 public: