diff --git a/alib2data/src/XmlApi.hpp b/alib2data/src/XmlApi.hpp
index 49f4e22388dd5629a4809c9f0e65cbd11db4ca4b..24d2d175f18f77fca83e97c0484df870e8c0456d 100644
--- a/alib2data/src/XmlApi.hpp
+++ b/alib2data/src/XmlApi.hpp
@@ -112,8 +112,8 @@ public:
 		std::function < Type ( std::deque < sax::Token >::iterator & ) > parseFunction;
 
 	public:
-		ParserRegister ( std::string tagName, std::function < Type ( std::deque < sax::Token >::iterator & ) > parseFunction ) : parseFunction ( parseFunction ) {
-			parseFunctions ( ).insert ( std::make_pair ( std::move ( tagName ), this ) );
+		ParserRegister ( ) : parseFunction ( Type::parse ) {
+			parseFunctions ( ).insert ( std::make_pair ( Type::XML_TAG_NAME, this ) );
 		}
 
 		virtual Group parse ( std::deque < sax::Token >::iterator & input ) {
diff --git a/alib2data/src/alphabet/BarSymbol.cpp b/alib2data/src/alphabet/BarSymbol.cpp
index 0034c9926058bd72cc14c0861618305faa5f7c50..c7cbc51166250f5e7366ab2012bf562f71ca9080 100644
--- a/alib2data/src/alphabet/BarSymbol.cpp
+++ b/alib2data/src/alphabet/BarSymbol.cpp
@@ -65,7 +65,7 @@ SymbolBase* BarSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BarSymbol> barSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BarSymbol>(alphabet::BarSymbol::XML_TAG_NAME, alphabet::BarSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::BarSymbol> barSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BarSymbol>(alphabet::BarSymbol::XML_TAG_NAME, alphabet::BarSymbol::parse);
+auto barSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BarSymbol>();
+auto barSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BarSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/BlankSymbol.cpp b/alib2data/src/alphabet/BlankSymbol.cpp
index 1cdb3c1caac35574a538c32bc8663c2d7cb4602f..9708fcf943d7718970e4e261df63914da76371c1 100644
--- a/alib2data/src/alphabet/BlankSymbol.cpp
+++ b/alib2data/src/alphabet/BlankSymbol.cpp
@@ -65,7 +65,7 @@ SymbolBase* BlankSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BlankSymbol> blankSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BlankSymbol>(alphabet::BlankSymbol::XML_TAG_NAME, alphabet::BlankSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::BlankSymbol> blankSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BlankSymbol>(alphabet::BlankSymbol::XML_TAG_NAME, alphabet::BlankSymbol::parse);
+auto blankSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BlankSymbol>();
+auto blankSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BlankSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp b/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp
index ac67c6caed265e107d4f29a7904d10fa45d7b319..62948e5263048ea273eceaad4e5dfd1e0e469ae3 100644
--- a/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp
+++ b/alib2data/src/alphabet/BottomOfTheStackSymbol.cpp
@@ -65,7 +65,7 @@ SymbolBase* BottomOfTheStackSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BottomOfTheStackSymbol> bottomOfTheStackSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BottomOfTheStackSymbol>(alphabet::BottomOfTheStackSymbol::XML_TAG_NAME, alphabet::BottomOfTheStackSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::BottomOfTheStackSymbol> bottomOfTheStackSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BottomOfTheStackSymbol>(alphabet::BottomOfTheStackSymbol::XML_TAG_NAME, alphabet::BottomOfTheStackSymbol::parse);
+auto bottomOfTheStackSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::BottomOfTheStackSymbol>();
+auto bottomOfTheStackSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::BottomOfTheStackSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/EndSymbol.cpp b/alib2data/src/alphabet/EndSymbol.cpp
index 33bc477708756c709cde8722078b01c564d1caa8..e0a5328948a89bdfc4ba2c275d9a5c5116582664 100644
--- a/alib2data/src/alphabet/EndSymbol.cpp
+++ b/alib2data/src/alphabet/EndSymbol.cpp
@@ -65,7 +65,7 @@ SymbolBase* EndSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::EndSymbol> endSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::EndSymbol>(alphabet::EndSymbol::XML_TAG_NAME, alphabet::EndSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::EndSymbol> endSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::EndSymbol>(alphabet::EndSymbol::XML_TAG_NAME, alphabet::EndSymbol::parse);
+auto endSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::EndSymbol>();
+auto endSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::EndSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/LabeledSymbol.cpp b/alib2data/src/alphabet/LabeledSymbol.cpp
index 2c7fba541de55de80289a9cee072c98137777607..bbd21316d9fda30fef0bd4e67eb78b06db02cc19 100644
--- a/alib2data/src/alphabet/LabeledSymbol.cpp
+++ b/alib2data/src/alphabet/LabeledSymbol.cpp
@@ -85,7 +85,7 @@ SymbolBase* LabeledSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::LabeledSymbol> labeledSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::LabeledSymbol>(alphabet::LabeledSymbol::XML_TAG_NAME, alphabet::LabeledSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::LabeledSymbol> labeledSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::LabeledSymbol>(alphabet::LabeledSymbol::XML_TAG_NAME, alphabet::LabeledSymbol::parse);
+auto labeledSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::LabeledSymbol>();
+auto labeledSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::LabeledSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/RankedSymbol.cpp b/alib2data/src/alphabet/RankedSymbol.cpp
index b01754fa706a0ccf5c1127813a85bd1b364e69f1..c4b66c4bbe15a42932fc49fc61717bcfce590082 100644
--- a/alib2data/src/alphabet/RankedSymbol.cpp
+++ b/alib2data/src/alphabet/RankedSymbol.cpp
@@ -93,7 +93,7 @@ SymbolBase* RankedSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::RankedSymbol> rankedSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::RankedSymbol>(alphabet::RankedSymbol::XML_TAG_NAME, alphabet::RankedSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::RankedSymbol> rankedSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::RankedSymbol>(alphabet::RankedSymbol::XML_TAG_NAME, alphabet::RankedSymbol::parse);
+auto rankedSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::RankedSymbol>();
+auto rankedSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::RankedSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/StartSymbol.cpp b/alib2data/src/alphabet/StartSymbol.cpp
index 2809d1d671d9723ea0b37744824cc8494396d5c4..2ee301be6b921d83bce27963c19a0435921be9dc 100644
--- a/alib2data/src/alphabet/StartSymbol.cpp
+++ b/alib2data/src/alphabet/StartSymbol.cpp
@@ -65,7 +65,7 @@ SymbolBase* StartSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::StartSymbol> startSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::StartSymbol>(alphabet::StartSymbol::XML_TAG_NAME, alphabet::StartSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::StartSymbol> startSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::StartSymbol>(alphabet::StartSymbol::XML_TAG_NAME, alphabet::StartSymbol::parse);
+auto startSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::StartSymbol>();
+auto startSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::StartSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp b/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp
index 48066a997fc037b069646b747812d1ed989cb986..d450ef34eecc2f09d119e5015b4a35ee2d343d20 100644
--- a/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp
+++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.cpp
@@ -65,7 +65,7 @@ SymbolBase* SubtreeWildcardSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SubtreeWildcardSymbol> subtreeWildcardSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SubtreeWildcardSymbol>(alphabet::SubtreeWildcardSymbol::XML_TAG_NAME, alphabet::SubtreeWildcardSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::SubtreeWildcardSymbol> subtreeWildcardSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::SubtreeWildcardSymbol>(alphabet::SubtreeWildcardSymbol::XML_TAG_NAME, alphabet::SubtreeWildcardSymbol::parse);
+auto subtreeWildcardSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SubtreeWildcardSymbol>();
+auto subtreeWildcardSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::SubtreeWildcardSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/SymbolPairSymbol.cpp b/alib2data/src/alphabet/SymbolPairSymbol.cpp
index 7115f47487ff0ee10cd54a3e92197f9472e5ecc1..74f5afa4ce171b3673ca854842667328141de9b7 100644
--- a/alib2data/src/alphabet/SymbolPairSymbol.cpp
+++ b/alib2data/src/alphabet/SymbolPairSymbol.cpp
@@ -83,7 +83,7 @@ SymbolBase* SymbolPairSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolPairSymbol> symbolPairSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolPairSymbol>(alphabet::SymbolPairSymbol::XML_TAG_NAME, alphabet::SymbolPairSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::SymbolPairSymbol> symbolPairSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::SymbolPairSymbol>(alphabet::SymbolPairSymbol::XML_TAG_NAME, alphabet::SymbolPairSymbol::parse);
+auto symbolPairSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolPairSymbol>();
+auto symbolPairSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::SymbolPairSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/SymbolSetSymbol.cpp b/alib2data/src/alphabet/SymbolSetSymbol.cpp
index 14ce18816c00120f99248143425f9f438e9deb2c..f91af83a88392a9ad41737931600002c57ea182a 100644
--- a/alib2data/src/alphabet/SymbolSetSymbol.cpp
+++ b/alib2data/src/alphabet/SymbolSetSymbol.cpp
@@ -87,7 +87,7 @@ SymbolBase* SymbolSetSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolSetSymbol> symbolSetSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolSetSymbol>(alphabet::SymbolSetSymbol::XML_TAG_NAME, alphabet::SymbolSetSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::SymbolSetSymbol> symbolSetSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::SymbolSetSymbol>(alphabet::SymbolSetSymbol::XML_TAG_NAME, alphabet::SymbolSetSymbol::parse);
+auto symbolSetSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::SymbolSetSymbol>();
+auto symbolSetSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::SymbolSetSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/UniqueSymbol.cpp b/alib2data/src/alphabet/UniqueSymbol.cpp
index 9c2917a8db909a1ff4b8f5fa5ca49fbddede5e75..803b5ef39224ab1b64f20c2491f0f3d9c39e23fd 100644
--- a/alib2data/src/alphabet/UniqueSymbol.cpp
+++ b/alib2data/src/alphabet/UniqueSymbol.cpp
@@ -91,7 +91,7 @@ SymbolBase* UniqueSymbol::inc() && {
 
 namespace alib {
 
-xmlApi<alphabet::Symbol>::ParserRegister<alphabet::UniqueSymbol> uniqueSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::UniqueSymbol>(alphabet::UniqueSymbol::XML_TAG_NAME, alphabet::UniqueSymbol::parse);
-xmlApi<alib::Object>::ParserRegister<alphabet::UniqueSymbol> uniqueSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::UniqueSymbol>(alphabet::UniqueSymbol::XML_TAG_NAME, alphabet::UniqueSymbol::parse);
+auto uniqueSymbolParserRegister = xmlApi<alphabet::Symbol>::ParserRegister<alphabet::UniqueSymbol>();
+auto uniqueSymbolParserRegister2 = xmlApi<alib::Object>::ParserRegister<alphabet::UniqueSymbol>();
 
 } /* namespace alib */
diff --git a/alib2data/src/alphabet/VariablesBarSymbol.cpp b/alib2data/src/alphabet/VariablesBarSymbol.cpp
index 322f586dafa65e3b32082e35fb76b4a9f2535654..316b8de05ec6e08d042f800f24276d5eba175ee4 100644
--- a/alib2data/src/alphabet/VariablesBarSymbol.cpp
+++ b/alib2data/src/alphabet/VariablesBarSymbol.cpp
@@ -65,7 +65,7 @@ SymbolBase * VariablesBarSymbol::inc ( ) && {
 
 namespace alib {
 
-xmlApi < alphabet::Symbol >::ParserRegister < alphabet::VariablesBarSymbol > variablesBarSymbolParserRegister = xmlApi < alphabet::Symbol >::ParserRegister < alphabet::VariablesBarSymbol > ( alphabet::VariablesBarSymbol::XML_TAG_NAME, alphabet::VariablesBarSymbol::parse );
-xmlApi < alib::Object >::ParserRegister < alphabet::VariablesBarSymbol > variablesBarSymbolParserRegister2 = xmlApi < alib::Object >::ParserRegister < alphabet::VariablesBarSymbol > ( alphabet::VariablesBarSymbol::XML_TAG_NAME, alphabet::VariablesBarSymbol::parse );
+auto variablesBarSymbolParserRegister = xmlApi < alphabet::Symbol >::ParserRegister < alphabet::VariablesBarSymbol > ();
+auto variablesBarSymbolParserRegister2 = xmlApi < alib::Object >::ParserRegister < alphabet::VariablesBarSymbol > ();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/FSM/CompactNFA.cpp b/alib2data/src/automaton/FSM/CompactNFA.cpp
index 16f06b909b86f35fcc9150c821b2a8f70d6ada8c..29fc5eddca47f0e7a30b3306b95e1324650f22f0 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactNFA.cpp
@@ -254,8 +254,8 @@ void CompactNFA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::CompactNFA> compactNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::CompactNFA>(automaton::CompactNFA::XML_TAG_NAME, automaton::CompactNFA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::CompactNFA> compactNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::CompactNFA>(automaton::CompactNFA::XML_TAG_NAME, automaton::CompactNFA::parse);
+auto compactNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::CompactNFA>();
+auto compactNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::CompactNFA>();
 
 auto CompactNFAFromDFA = castApi::CastRegister<automaton::CompactNFA, automaton::DFA>();
 auto CompactNFAFromNFA = castApi::CastRegister<automaton::CompactNFA, automaton::NFA>();
diff --git a/alib2data/src/automaton/FSM/DFA.cpp b/alib2data/src/automaton/FSM/DFA.cpp
index 0f3761beef6750adb26c1999eff22481597898d5..a1c0f6b105141a5819e3a6d65d60fb7f9e553d16 100644
--- a/alib2data/src/automaton/FSM/DFA.cpp
+++ b/alib2data/src/automaton/FSM/DFA.cpp
@@ -220,7 +220,7 @@ void DFA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::DFA> DFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DFA>(automaton::DFA::XML_TAG_NAME, automaton::DFA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::DFA> DFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DFA>(automaton::DFA::XML_TAG_NAME, automaton::DFA::parse);
+auto DFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DFA>();
+auto DFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DFA>();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.cpp b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
index 0233e29ccb3f380c048fed4fac59fb9b75a0294b..cf52129a4c50db628e1315e5a0a5b55eead86ead 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
@@ -343,8 +343,8 @@ void EpsilonNFA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::EpsilonNFA> epsilonNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::EpsilonNFA>(automaton::EpsilonNFA::XML_TAG_NAME, automaton::EpsilonNFA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::EpsilonNFA> epsilonNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::EpsilonNFA>(automaton::EpsilonNFA::XML_TAG_NAME, automaton::EpsilonNFA::parse);
+auto epsilonNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::EpsilonNFA>();
+auto epsilonNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::EpsilonNFA>();
 
 auto EpsilonNFAFromDFA = castApi::CastRegister<automaton::EpsilonNFA, automaton::DFA>();
 auto EpsilonNFAFromNFA = castApi::CastRegister<automaton::EpsilonNFA, automaton::NFA>();
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.cpp b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
index 00de1706cb01c4d008718816bea7b4bd8112f6fa..0ff4edb513a87170712f7baee8461f84638982b6 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.cpp
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
@@ -265,8 +265,8 @@ void ExtendedNFA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::ExtendedNFA> extendedNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::ExtendedNFA>(automaton::ExtendedNFA::XML_TAG_NAME, automaton::ExtendedNFA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::ExtendedNFA> extendedNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::ExtendedNFA>(automaton::ExtendedNFA::XML_TAG_NAME, automaton::ExtendedNFA::parse);
+auto extendedNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::ExtendedNFA>();
+auto extendedNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::ExtendedNFA>();
 
 auto ExtendedNFAFromDFA = castApi::CastRegister<automaton::ExtendedNFA, automaton::DFA>();
 auto ExtendedNFAFromNFA = castApi::CastRegister<automaton::ExtendedNFA, automaton::NFA>();
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
index dafe752d8de034e901eea096b72468ae6c1ee501..5e2ad5581400005d38a1546171da3f88027dd220 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
@@ -245,8 +245,8 @@ void MultiInitialStateNFA::composeTransitions(std::deque<sax::Token>& out) const
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::MultiInitialStateNFA> multiInitialStateNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::MultiInitialStateNFA>(automaton::MultiInitialStateNFA::XML_TAG_NAME, automaton::MultiInitialStateNFA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::MultiInitialStateNFA> multiInitialStateNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::MultiInitialStateNFA>(automaton::MultiInitialStateNFA::XML_TAG_NAME, automaton::MultiInitialStateNFA::parse);
+auto multiInitialStateNFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::MultiInitialStateNFA>();
+auto multiInitialStateNFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::MultiInitialStateNFA>();
 
 auto MultiInitialStateNFAFromDFA = castApi::CastRegister<automaton::MultiInitialStateNFA, automaton::DFA>();
 auto MultiInitialStateNFAFromNFA = castApi::CastRegister<automaton::MultiInitialStateNFA, automaton::NFA>();
diff --git a/alib2data/src/automaton/FSM/NFA.cpp b/alib2data/src/automaton/FSM/NFA.cpp
index 28eacec4ebdf4e067ea9bc937a522f93c90db34d..1e7f2cf4886848efc10dff80c31602cbe94c69f4 100644
--- a/alib2data/src/automaton/FSM/NFA.cpp
+++ b/alib2data/src/automaton/FSM/NFA.cpp
@@ -227,8 +227,8 @@ void NFA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::NFA> NFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NFA>(automaton::NFA::XML_TAG_NAME, automaton::NFA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::NFA> NFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NFA>(automaton::NFA::XML_TAG_NAME, automaton::NFA::parse);
+auto NFAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NFA>();
+auto NFAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NFA>();
 
 auto NFAFromDFA = castApi::CastRegister<automaton::NFA, automaton::DFA>();
 auto NFACastBinder = castApi::CastPoolStringBinder<automaton::NFA>(automaton::NFA::XML_TAG_NAME);
diff --git a/alib2data/src/automaton/PDA/DPDA.cpp b/alib2data/src/automaton/PDA/DPDA.cpp
index e5ab067461a89de44c14c05ae58b4641c5851773..5be65402785b7a85da08e75df37badfa6c62085f 100644
--- a/alib2data/src/automaton/PDA/DPDA.cpp
+++ b/alib2data/src/automaton/PDA/DPDA.cpp
@@ -325,8 +325,8 @@ void DPDA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::DPDA> DPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DPDA>(automaton::DPDA::XML_TAG_NAME, automaton::DPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::DPDA> DPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DPDA>(automaton::DPDA::XML_TAG_NAME, automaton::DPDA::parse);
+auto DPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DPDA>();
+auto DPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DPDA>();
 
 auto DPDACastBinder = castApi::CastPoolStringBinder<automaton::DPDA>(automaton::DPDA::XML_TAG_NAME);
 
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
index 591c417656304fbb74fa096c7bf7b222848affca..6c9346b58ce9881b2900de1d468ae5ae4b5680b0 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
@@ -295,7 +295,7 @@ void InputDrivenDPDA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenDPDA> inputDivenDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenDPDA>(automaton::InputDrivenDPDA::XML_TAG_NAME, automaton::InputDrivenDPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenDPDA> inputDivenDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenDPDA>(automaton::InputDrivenDPDA::XML_TAG_NAME, automaton::InputDrivenDPDA::parse);
+auto inputDivenDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenDPDA>();
+auto inputDivenDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenDPDA>();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
index d3bf5201273630f67d2c207f7e7227e0b2f28b08..46aa618fcd17402f405b206f39d5eeb140a2900c 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
@@ -288,7 +288,7 @@ void InputDrivenNPDA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenNPDA> inputDrivenNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenNPDA>(automaton::InputDrivenNPDA::XML_TAG_NAME, automaton::InputDrivenNPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenNPDA> inputDrivenNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenNPDA>(automaton::InputDrivenNPDA::XML_TAG_NAME, automaton::InputDrivenNPDA::parse);
+auto inputDrivenNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::InputDrivenNPDA>();
+auto inputDrivenNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::InputDrivenNPDA>();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/NPDA.cpp b/alib2data/src/automaton/PDA/NPDA.cpp
index dfbe86366ddc7805829a0cfe75d2ad4f3d76cd1a..a45429716adc845828e03e0390627a1fb64bdccc 100644
--- a/alib2data/src/automaton/PDA/NPDA.cpp
+++ b/alib2data/src/automaton/PDA/NPDA.cpp
@@ -242,8 +242,8 @@ void NPDA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::NPDA> NPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NPDA>(automaton::NPDA::XML_TAG_NAME, automaton::NPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::NPDA> NPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NPDA>(automaton::NPDA::XML_TAG_NAME, automaton::NPDA::parse);
+auto NPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NPDA>();
+auto NPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NPDA>();
 
 auto NPDACastBinder = castApi::CastPoolStringBinder<automaton::NPDA>(automaton::NPDA::XML_TAG_NAME);
 
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
index 153d788fbba2b423362586cc16c27503eebbad27..2503f2796119a7fe106a5a6a796c9f49d1bc58e6 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
@@ -507,8 +507,8 @@ void RealTimeHeightDeterministicDPDA::composeTransitions(std::deque<sax::Token>&
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA> realTimeHeightDeterministicDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA>(automaton::RealTimeHeightDeterministicDPDA::XML_TAG_NAME, automaton::RealTimeHeightDeterministicDPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA> realTimeHeightDeterministicDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA>(automaton::RealTimeHeightDeterministicDPDA::XML_TAG_NAME, automaton::RealTimeHeightDeterministicDPDA::parse);
+auto realTimeHeightDeterministicDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA>();
+auto realTimeHeightDeterministicDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicDPDA>();
 
 auto RealTimeHeightDeterministicDPDACastBinder = castApi::CastPoolStringBinder<automaton::RealTimeHeightDeterministicDPDA>(automaton::RealTimeHeightDeterministicDPDA::XML_TAG_NAME);
 
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
index 78c23a51c2ed2b7e8a3cfc45a5f56ba0ae91139b..26408d1b69292493c4313d114c0bbccf404853b2 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
@@ -405,8 +405,8 @@ void RealTimeHeightDeterministicNPDA::composeTransitions(std::deque<sax::Token>&
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA> realTimeHeightDeterministicNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA>(automaton::RealTimeHeightDeterministicNPDA::XML_TAG_NAME, automaton::RealTimeHeightDeterministicNPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA> realTimeHeightDeterministicNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA>(automaton::RealTimeHeightDeterministicNPDA::XML_TAG_NAME, automaton::RealTimeHeightDeterministicNPDA::parse);
+auto realTimeHeightDeterministicNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA>();
+auto realTimeHeightDeterministicNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::RealTimeHeightDeterministicNPDA>();
 
 auto RealTimeHeightDeterministicNPDACastBinder = castApi::CastPoolStringBinder<automaton::RealTimeHeightDeterministicNPDA>(automaton::RealTimeHeightDeterministicNPDA::XML_TAG_NAME);
 
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
index 96a19793b18da9a6a3403a6be1397ff7777154e0..16aab1713e60e12fb65c38e8546385dfbca298d3 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
@@ -270,7 +270,7 @@ void SinglePopDPDA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopDPDA> singlePopDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopDPDA>(automaton::SinglePopDPDA::XML_TAG_NAME, automaton::SinglePopDPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::SinglePopDPDA> singlePopDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::SinglePopDPDA>(automaton::SinglePopDPDA::XML_TAG_NAME, automaton::SinglePopDPDA::parse);
+auto singlePopDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopDPDA>();
+auto singlePopDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::SinglePopDPDA>();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
index 1dc14b6f8031b70b5032c4cc7f141ea7887a5b33..2d289bdbd5291a5b6abbf9626faa9f59f6603397 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
@@ -238,7 +238,7 @@ void SinglePopNPDA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopNPDA> singlePopNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopNPDA>(automaton::SinglePopNPDA::XML_TAG_NAME, automaton::SinglePopNPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::SinglePopNPDA> singlePopNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::SinglePopNPDA>(automaton::SinglePopNPDA::XML_TAG_NAME, automaton::SinglePopNPDA::parse);
+auto singlePopNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::SinglePopNPDA>();
+auto singlePopNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::SinglePopNPDA>();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
index 7d2e48cd20d653b78948f1c348c7b05b2b038b60..1fcc5959f4d2c939d4b4efc8a4a1aaf5e9c1e624 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
@@ -412,7 +412,7 @@ void VisiblyPushdownDPDA::composeTransitions(std::deque<sax::Token>& out) const
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownDPDA> visiblyPushdownDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownDPDA>(automaton::VisiblyPushdownDPDA::XML_TAG_NAME, automaton::VisiblyPushdownDPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownDPDA> visiblyPushdownDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownDPDA>(automaton::VisiblyPushdownDPDA::XML_TAG_NAME, automaton::VisiblyPushdownDPDA::parse);
+auto visiblyPushdownDPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownDPDA>();
+auto visiblyPushdownDPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownDPDA>();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
index 3d420771c1f31cb0c15462a8ed4eec1e78a554e3..88a149a5fc2fd3bf6fd32a01e637571dee6b3a46 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
@@ -352,7 +352,7 @@ void VisiblyPushdownNPDA::composeTransitions(std::deque<sax::Token>& out) const
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownNPDA> visiblyPushdownNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownNPDA>(automaton::VisiblyPushdownNPDA::XML_TAG_NAME, automaton::VisiblyPushdownNPDA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownNPDA> visiblyPushdownNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownNPDA>(automaton::VisiblyPushdownNPDA::XML_TAG_NAME, automaton::VisiblyPushdownNPDA::parse);
+auto visiblyPushdownNPDAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::VisiblyPushdownNPDA>();
+auto visiblyPushdownNPDAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::VisiblyPushdownNPDA>();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/TA/DFTA.cpp b/alib2data/src/automaton/TA/DFTA.cpp
index 7a25eea2857dd49a696567791251ff51b4fb5ce4..064f80036f27e916ea558f4c1ed09ae44cd19b7e 100644
--- a/alib2data/src/automaton/TA/DFTA.cpp
+++ b/alib2data/src/automaton/TA/DFTA.cpp
@@ -174,7 +174,7 @@ void DFTA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::DFTA> DFTAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DFTA>(automaton::DFTA::XML_TAG_NAME, automaton::DFTA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::DFTA> DFTAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DFTA>(automaton::DFTA::XML_TAG_NAME, automaton::DFTA::parse);
+auto DFTAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::DFTA>();
+auto DFTAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::DFTA>();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/TA/NFTA.cpp b/alib2data/src/automaton/TA/NFTA.cpp
index 52b5c40240b575606d4909f8f62b0477e15b7f2f..d53a607efec5f6e32222b760d07aa5acf435c0b0 100644
--- a/alib2data/src/automaton/TA/NFTA.cpp
+++ b/alib2data/src/automaton/TA/NFTA.cpp
@@ -194,7 +194,7 @@ void NFTA::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::NFTA> NFTAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NFTA>(automaton::NFTA::XML_TAG_NAME, automaton::NFTA::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::NFTA> NFTAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NFTA>(automaton::NFTA::XML_TAG_NAME, automaton::NFTA::parse);
+auto NFTAParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::NFTA>();
+auto NFTAParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::NFTA>();
 
 } /* namespace alib */
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.cpp b/alib2data/src/automaton/TM/OneTapeDTM.cpp
index eb67bea81043526a26d3e90cfcd6bb964f2e19f3..e22ac1e320d2c11c48df1ac067dc1b56ced08311 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.cpp
+++ b/alib2data/src/automaton/TM/OneTapeDTM.cpp
@@ -218,7 +218,7 @@ void OneTapeDTM::composeTransitions(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<automaton::Automaton>::ParserRegister<automaton::OneTapeDTM> oneTapeDTMParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::OneTapeDTM>(automaton::OneTapeDTM::XML_TAG_NAME, automaton::OneTapeDTM::parse);
-xmlApi<alib::Object>::ParserRegister<automaton::OneTapeDTM> oneTapeDTMParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::OneTapeDTM>(automaton::OneTapeDTM::XML_TAG_NAME, automaton::OneTapeDTM::parse);
+auto oneTapeDTMParserRegister = xmlApi<automaton::Automaton>::ParserRegister<automaton::OneTapeDTM>();
+auto oneTapeDTMParserRegister2 = xmlApi<alib::Object>::ParserRegister<automaton::OneTapeDTM>();
 
 } /* namespace alib */
diff --git a/alib2data/src/container/ObjectsDeque.cpp b/alib2data/src/container/ObjectsDeque.cpp
index 3e58d8cf87d989e7eb75ebfb5d4b4808fc903f9b..e8cd516e22261c7f879e96be294e40f589e4675e 100644
--- a/alib2data/src/container/ObjectsDeque.cpp
+++ b/alib2data/src/container/ObjectsDeque.cpp
@@ -57,7 +57,7 @@ void ObjectsDeque::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < container::Container >::ParserRegister < container::ObjectsDeque > objectsDequeParserRegister = xmlApi < container::Container >::ParserRegister < container::ObjectsDeque > ( container::ObjectsDeque::XML_TAG_NAME, container::ObjectsDeque::parse );
-xmlApi < alib::Object >::ParserRegister < container::ObjectsDeque > objectsDequeParserRegister2 = xmlApi < alib::Object >::ParserRegister < container::ObjectsDeque > ( container::ObjectsDeque::XML_TAG_NAME, container::ObjectsDeque::parse );
+auto objectsDequeParserRegister = xmlApi < container::Container >::ParserRegister < container::ObjectsDeque > ();
+auto objectsDequeParserRegister2 = xmlApi < alib::Object >::ParserRegister < container::ObjectsDeque > ();
 
 } /* namespace alib */
diff --git a/alib2data/src/container/ObjectsList.cpp b/alib2data/src/container/ObjectsList.cpp
index df7b58509af155b2586b6b891f12ac73bb9563b1..c55c5936a4695636fd097c0e2bca91443e3c8a3f 100644
--- a/alib2data/src/container/ObjectsList.cpp
+++ b/alib2data/src/container/ObjectsList.cpp
@@ -57,7 +57,7 @@ void ObjectsList::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < container::Container >::ParserRegister < container::ObjectsList > objectsListParserRegister = xmlApi < container::Container >::ParserRegister < container::ObjectsList > ( container::ObjectsList::XML_TAG_NAME, container::ObjectsList::parse );
-xmlApi < alib::Object >::ParserRegister < container::ObjectsList > objectsListParserRegister2 = xmlApi < alib::Object >::ParserRegister < container::ObjectsList > ( container::ObjectsList::XML_TAG_NAME, container::ObjectsList::parse );
+auto objectsListParserRegister = xmlApi < container::Container >::ParserRegister < container::ObjectsList > ();
+auto objectsListParserRegister2 = xmlApi < alib::Object >::ParserRegister < container::ObjectsList > ();
 
 } /* namespace alib */
diff --git a/alib2data/src/container/ObjectsMap.cpp b/alib2data/src/container/ObjectsMap.cpp
index bef8847e198c9ce85e4f78ee858d9682c5ea5f20..35bb179915ae057144dbafa6259e0703f491568c 100644
--- a/alib2data/src/container/ObjectsMap.cpp
+++ b/alib2data/src/container/ObjectsMap.cpp
@@ -60,7 +60,7 @@ void ObjectsMap::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<container::Container>::ParserRegister<container::ObjectsMap> objectsMapParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsMap>(container::ObjectsMap::XML_TAG_NAME, container::ObjectsMap::parse);
-xmlApi<alib::Object>::ParserRegister<container::ObjectsMap> objectsMapParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsMap>(container::ObjectsMap::XML_TAG_NAME, container::ObjectsMap::parse);
+auto objectsMapParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsMap>();
+auto objectsMapParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsMap>();
 
 } /* namespace alib */
diff --git a/alib2data/src/container/ObjectsPair.cpp b/alib2data/src/container/ObjectsPair.cpp
index 8999730193593ef5d536be0b79af027df319afe8..96bd7ef76217c4d4b77089eb37153fd17eec9f79 100644
--- a/alib2data/src/container/ObjectsPair.cpp
+++ b/alib2data/src/container/ObjectsPair.cpp
@@ -60,7 +60,7 @@ void ObjectsPair::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<container::Container>::ParserRegister<container::ObjectsPair> objectsPairParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsPair>(container::ObjectsPair::XML_TAG_NAME, container::ObjectsPair::parse);
-xmlApi<alib::Object>::ParserRegister<container::ObjectsPair> objectsPairParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsPair>(container::ObjectsPair::XML_TAG_NAME, container::ObjectsPair::parse);
+auto objectsPairParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsPair>();
+auto objectsPairParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsPair>();
 
 } /* namespace alib */
diff --git a/alib2data/src/container/ObjectsSet.cpp b/alib2data/src/container/ObjectsSet.cpp
index 2cda27a1af56cbeaa44f088bc81119910f710f07..d2efe1a2e84b9ecca37f286195a26fb99e4c5b91 100644
--- a/alib2data/src/container/ObjectsSet.cpp
+++ b/alib2data/src/container/ObjectsSet.cpp
@@ -58,7 +58,7 @@ void ObjectsSet::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<container::Container>::ParserRegister<container::ObjectsSet> objectsSetParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsSet>(container::ObjectsSet::XML_TAG_NAME, container::ObjectsSet::parse);
-xmlApi<alib::Object>::ParserRegister<container::ObjectsSet> objectsSetParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsSet>(container::ObjectsSet::XML_TAG_NAME, container::ObjectsSet::parse);
+auto objectsSetParserRegister = xmlApi<container::Container>::ParserRegister<container::ObjectsSet>();
+auto objectsSetParserRegister2 = xmlApi<alib::Object>::ParserRegister<container::ObjectsSet>();
 
 } /* namespace alib */
diff --git a/alib2data/src/container/ObjectsVector.cpp b/alib2data/src/container/ObjectsVector.cpp
index 700508240d6b70bb7fcb23dc35d9304e9a91dc62..6605b1449d685f076499c8a321dbbd80a15c342d 100644
--- a/alib2data/src/container/ObjectsVector.cpp
+++ b/alib2data/src/container/ObjectsVector.cpp
@@ -57,7 +57,7 @@ void ObjectsVector::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < container::Container >::ParserRegister < container::ObjectsVector > objectsVectorParserRegister = xmlApi < container::Container >::ParserRegister < container::ObjectsVector > ( container::ObjectsVector::XML_TAG_NAME, container::ObjectsVector::parse );
-xmlApi < alib::Object >::ParserRegister < container::ObjectsVector > objectsVectorParserRegister2 = xmlApi < alib::Object >::ParserRegister < container::ObjectsVector > ( container::ObjectsVector::XML_TAG_NAME, container::ObjectsVector::parse );
+auto objectsVectorParserRegister = xmlApi < container::Container >::ParserRegister < container::ObjectsVector > ();
+auto objectsVectorParserRegister2 = xmlApi < alib::Object >::ParserRegister < container::ObjectsVector > ();
 
 } /* namespace alib */
diff --git a/alib2data/src/exception/AlibException.cpp b/alib2data/src/exception/AlibException.cpp
index 262c8454d5e0f6e72cf99a8babc0b1f5905804fb..4ff4afc4eb35fc3535b626ea648f09577f31afc4 100644
--- a/alib2data/src/exception/AlibException.cpp
+++ b/alib2data/src/exception/AlibException.cpp
@@ -120,6 +120,6 @@ void AlibException::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<alib::Object>::ParserRegister<exception::AlibException> alibExceptionParserRegister2 = xmlApi<alib::Object>::ParserRegister<exception::AlibException>(exception::AlibException::XML_TAG_NAME, exception::AlibException::parse);
+auto alibExceptionParserRegister2 = xmlApi<alib::Object>::ParserRegister<exception::AlibException>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextFree/CFG.cpp b/alib2data/src/grammar/ContextFree/CFG.cpp
index b28525c0c17215386ed845c88c9c91c00a18d0a4..3e14be13e0e1838f69dac10973bf2fd0715f8eb3 100644
--- a/alib2data/src/grammar/ContextFree/CFG.cpp
+++ b/alib2data/src/grammar/ContextFree/CFG.cpp
@@ -186,8 +186,8 @@ void CFG::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::CFG> CFGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::CFG>(grammar::CFG::XML_TAG_NAME, grammar::CFG::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::CFG> CFGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::CFG>(grammar::CFG::XML_TAG_NAME, grammar::CFG::parse);
+auto CFGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::CFG>();
+auto CFGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::CFG>();
 
 auto CFGEpsilonFreeCFG = castApi::CastRegister<grammar::CFG, grammar::EpsilonFreeCFG>();
 auto CFGCastBinder = castApi::CastPoolStringBinder<grammar::CFG>(grammar::CFG::XML_TAG_NAME);
diff --git a/alib2data/src/grammar/ContextFree/CNF.cpp b/alib2data/src/grammar/ContextFree/CNF.cpp
index 4b2d2aa46eca895292756b365a78391782444b55..75da5e741ebf1c22ff79752e73f4544ec13c3f77 100644
--- a/alib2data/src/grammar/ContextFree/CNF.cpp
+++ b/alib2data/src/grammar/ContextFree/CNF.cpp
@@ -263,7 +263,7 @@ void CNF::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::CNF> CNFParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::CNF>(grammar::CNF::XML_TAG_NAME, grammar::CNF::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::CNF> CNFParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::CNF>(grammar::CNF::XML_TAG_NAME, grammar::CNF::parse);
+auto CNFParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::CNF>();
+auto CNFParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::CNF>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
index f08c0b74a30ef138998ded45d3ca13840b02f478..6b2c7c5770f98da81008a96d30a853d386d7e8f1 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
@@ -214,7 +214,7 @@ void EpsilonFreeCFG::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::EpsilonFreeCFG> EpsilonFreeCFGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::EpsilonFreeCFG>(grammar::EpsilonFreeCFG::XML_TAG_NAME, grammar::EpsilonFreeCFG::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::EpsilonFreeCFG> EpsilonFreeCFGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::EpsilonFreeCFG>(grammar::EpsilonFreeCFG::XML_TAG_NAME, grammar::EpsilonFreeCFG::parse);
+auto EpsilonFreeCFGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::EpsilonFreeCFG>();
+auto EpsilonFreeCFGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::EpsilonFreeCFG>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextFree/GNF.cpp b/alib2data/src/grammar/ContextFree/GNF.cpp
index adb9bfff4b6b8f5314a1c9327d7feef2d6da52a1..98305f39f9f8f095fe303edee24be2a59584f3cf 100644
--- a/alib2data/src/grammar/ContextFree/GNF.cpp
+++ b/alib2data/src/grammar/ContextFree/GNF.cpp
@@ -221,7 +221,7 @@ void GNF::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::GNF> GNFParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::GNF>(grammar::GNF::XML_TAG_NAME, grammar::GNF::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::GNF> GNFParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::GNF>(grammar::GNF::XML_TAG_NAME, grammar::GNF::parse);
+auto GNFParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::GNF>();
+auto GNFParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::GNF>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextFree/LG.cpp b/alib2data/src/grammar/ContextFree/LG.cpp
index 967bbab4ca31c5124672eec375dd8589d759da34..36ef1bbdd6808789b7f7c08ee2ab63fdf58a839b 100644
--- a/alib2data/src/grammar/ContextFree/LG.cpp
+++ b/alib2data/src/grammar/ContextFree/LG.cpp
@@ -267,7 +267,7 @@ void LG::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::LG> LGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::LG>(grammar::LG::XML_TAG_NAME, grammar::LG::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::LG> LGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::LG>(grammar::LG::XML_TAG_NAME, grammar::LG::parse);
+auto LGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::LG>();
+auto LGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::LG>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.cpp b/alib2data/src/grammar/ContextSensitive/CSG.cpp
index 0f87e639bd11661004708c63c1ac97e952cfe148..222aac1d2db53816be03341b83947a236abfb990 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.cpp
+++ b/alib2data/src/grammar/ContextSensitive/CSG.cpp
@@ -214,7 +214,7 @@ void CSG::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::CSG> CSGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::CSG>(grammar::CSG::XML_TAG_NAME, grammar::CSG::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::CSG> CSGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::CSG>(grammar::CSG::XML_TAG_NAME, grammar::CSG::parse);
+auto CSGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::CSG>();
+auto CSGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::CSG>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
index c1d8816f6b6e4fbe11114e7b209520aecfbfcb35..36e6ce0f5a0fec7ee8bdf44fd96d60ba5b157afc 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
@@ -191,7 +191,7 @@ void NonContractingGrammar::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::NonContractingGrammar> nonContractingGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::NonContractingGrammar>(grammar::NonContractingGrammar::XML_TAG_NAME, grammar::NonContractingGrammar::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::NonContractingGrammar> nonContractingGrammarParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::NonContractingGrammar>(grammar::NonContractingGrammar::XML_TAG_NAME, grammar::NonContractingGrammar::parse);
+auto nonContractingGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::NonContractingGrammar>();
+auto nonContractingGrammarParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::NonContractingGrammar>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Regular/LeftLG.cpp b/alib2data/src/grammar/Regular/LeftLG.cpp
index 69638d3005304ab8748cb394ecc4b0d59640844f..f985734f193cc4d3c292265dc38d88c02e98f565 100644
--- a/alib2data/src/grammar/Regular/LeftLG.cpp
+++ b/alib2data/src/grammar/Regular/LeftLG.cpp
@@ -251,7 +251,7 @@ void LeftLG::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftLG> LeftLGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftLG>(grammar::LeftLG::XML_TAG_NAME, grammar::LeftLG::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::LeftLG> LeftLGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::LeftLG>(grammar::LeftLG::XML_TAG_NAME, grammar::LeftLG::parse);
+auto LeftLGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftLG>();
+auto LeftLGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::LeftLG>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Regular/LeftRG.cpp b/alib2data/src/grammar/Regular/LeftRG.cpp
index 5a226caf0f625389e5f31642ac4119d12dfcbe98..66569827fc4e3a49b4fd0a02b1fe8171e3fd0644 100644
--- a/alib2data/src/grammar/Regular/LeftRG.cpp
+++ b/alib2data/src/grammar/Regular/LeftRG.cpp
@@ -260,7 +260,7 @@ void LeftRG::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftRG> LeftRGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftRG>(grammar::LeftRG::XML_TAG_NAME, grammar::LeftRG::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::LeftRG> LeftRGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::LeftRG>(grammar::LeftRG::XML_TAG_NAME, grammar::LeftRG::parse);
+auto LeftRGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::LeftRG>();
+auto LeftRGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::LeftRG>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Regular/RightLG.cpp b/alib2data/src/grammar/Regular/RightLG.cpp
index 0c4a3b5a5039495003dd6d688cd6e66df2e894a1..9b87b17dbc26b2fe8be98b8a69df6ad85f2e11b6 100644
--- a/alib2data/src/grammar/Regular/RightLG.cpp
+++ b/alib2data/src/grammar/Regular/RightLG.cpp
@@ -251,7 +251,7 @@ void RightLG::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::RightLG> RightLGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::RightLG>(grammar::RightLG::XML_TAG_NAME, grammar::RightLG::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::RightLG> RightLGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::RightLG>(grammar::RightLG::XML_TAG_NAME, grammar::RightLG::parse);
+auto RightLGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::RightLG>();
+auto RightLGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::RightLG>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Regular/RightRG.cpp b/alib2data/src/grammar/Regular/RightRG.cpp
index d2d32d11dbc0d540a10ed96347591a7b45d3162d..9987cbaa62bcf0024fe57876e74b1bc9de72809f 100644
--- a/alib2data/src/grammar/Regular/RightRG.cpp
+++ b/alib2data/src/grammar/Regular/RightRG.cpp
@@ -260,7 +260,7 @@ void RightRG::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::RightRG> RightRGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::RightRG>(grammar::RightRG::XML_TAG_NAME, grammar::RightRG::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::RightRG> RightRGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::RightRG>(grammar::RightRG::XML_TAG_NAME, grammar::RightRG::parse);
+auto RightRGParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::RightRG>();
+auto RightRGParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::RightRG>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
index f250012583142fa1480d7f33db787ea3a8e28bdc..1b181e04f273022e5c9e750ea4f71f210850715c 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
@@ -195,7 +195,7 @@ void ContextPreservingUnrestrictedGrammar::composeRules(std::deque<sax::Token>&
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar> ContextPreservingUnrestrictedGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar>(grammar::ContextPreservingUnrestrictedGrammar::XML_TAG_NAME, grammar::ContextPreservingUnrestrictedGrammar::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar> ContextPreservingUnrestrictedGrammarParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar>(grammar::ContextPreservingUnrestrictedGrammar::XML_TAG_NAME, grammar::ContextPreservingUnrestrictedGrammar::parse);
+auto ContextPreservingUnrestrictedGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar>();
+auto ContextPreservingUnrestrictedGrammarParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::ContextPreservingUnrestrictedGrammar>();
 
 } /* namespace alib */
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
index 46f86d0744037da65580546fe7816207181dcfbf..d765dc27677b49cf51052c314ffd0f933c79711e 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
@@ -172,7 +172,7 @@ void UnrestrictedGrammar::composeRules(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<grammar::Grammar>::ParserRegister<grammar::UnrestrictedGrammar> UnrestrictedGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::UnrestrictedGrammar>(grammar::UnrestrictedGrammar::XML_TAG_NAME, grammar::UnrestrictedGrammar::parse);
-xmlApi<alib::Object>::ParserRegister<grammar::UnrestrictedGrammar> UnrestrictedGrammarParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::UnrestrictedGrammar>(grammar::UnrestrictedGrammar::XML_TAG_NAME, grammar::UnrestrictedGrammar::parse);
+auto UnrestrictedGrammarParserRegister = xmlApi<grammar::Grammar>::ParserRegister<grammar::UnrestrictedGrammar>();
+auto UnrestrictedGrammarParserRegister2 = xmlApi<alib::Object>::ParserRegister<grammar::UnrestrictedGrammar>();
 
 } /* namespace alib */
diff --git a/alib2data/src/graph/directed/DirectedGraph.cpp b/alib2data/src/graph/directed/DirectedGraph.cpp
index b8e0ac3e546b82198dcb40bec8a44ea152c7dc0f..12ae66f3bab32d633c386a9e9ab71bbbe3a794bf 100644
--- a/alib2data/src/graph/directed/DirectedGraph.cpp
+++ b/alib2data/src/graph/directed/DirectedGraph.cpp
@@ -272,7 +272,7 @@ void DirectedGraph::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<graph::Graph>::ParserRegister<graph::DirectedGraph> directedGraphParserRegister = xmlApi<graph::Graph>::ParserRegister<graph::DirectedGraph>(graph::DirectedGraph::XML_TAG_NAME, graph::DirectedGraph::parse);
-xmlApi<alib::Object>::ParserRegister<graph::DirectedGraph> directedGraphParserRegister2 = xmlApi<alib::Object>::ParserRegister<graph::DirectedGraph>(graph::DirectedGraph::XML_TAG_NAME, graph::DirectedGraph::parse);
+auto directedGraphParserRegister = xmlApi<graph::Graph>::ParserRegister<graph::DirectedGraph>();
+auto directedGraphParserRegister2 = xmlApi<alib::Object>::ParserRegister<graph::DirectedGraph>();
 
 } /* namespace alib */
diff --git a/alib2data/src/graph/undirected/UndirectedGraph.cpp b/alib2data/src/graph/undirected/UndirectedGraph.cpp
index 596ad5fca6d31d1059e1a3c9e6a665c94a8d8887..3a0ebc79bbcaa88e3e64feb599a4fa8bb9dad5e6 100644
--- a/alib2data/src/graph/undirected/UndirectedGraph.cpp
+++ b/alib2data/src/graph/undirected/UndirectedGraph.cpp
@@ -272,7 +272,7 @@ void UndirectedGraph::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<graph::Graph>::ParserRegister<graph::UndirectedGraph> undirectedGraphParserRegister = xmlApi<graph::Graph>::ParserRegister<graph::UndirectedGraph>(graph::UndirectedGraph::XML_TAG_NAME, graph::UndirectedGraph::parse);
-xmlApi<alib::Object>::ParserRegister<graph::UndirectedGraph> undirectedGraphParserRegister2 = xmlApi<alib::Object>::ParserRegister<graph::UndirectedGraph>(graph::UndirectedGraph::XML_TAG_NAME, graph::UndirectedGraph::parse);
+auto undirectedGraphParserRegister = xmlApi<graph::Graph>::ParserRegister<graph::UndirectedGraph>();
+auto undirectedGraphParserRegister2 = xmlApi<alib::Object>::ParserRegister<graph::UndirectedGraph>();
 
 } /* namespace alib */
diff --git a/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp b/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp
index bf5248d27a264aa4dd4a47500c3a33c31a5cb788..47f6c5dc35c4e687c9f30c6419c59f1f4520b23b 100644
--- a/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp
+++ b/alib2data/src/indexes/suffixTrie/SuffixTrieFinalMark.cpp
@@ -159,6 +159,6 @@ void SuffixTrieFinalMark::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < alib::Object >::ParserRegister < indexes::SuffixTrieFinalMark > suffixTreeFinalMarkParserRegister = xmlApi < alib::Object >::ParserRegister < indexes::SuffixTrieFinalMark > ( indexes::SuffixTrieFinalMark::XML_TAG_NAME, indexes::SuffixTrieFinalMark::parse );
+auto suffixTreeFinalMarkParserRegister = xmlApi < alib::Object >::ParserRegister < indexes::SuffixTrieFinalMark > ();
 
 } /* namespace alib */
diff --git a/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp b/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp
index 8799c20acf7aa0b82aa11bec6794bd44097477a7..a8cadd22f5534270562d0e612b11924df4da2ed1 100644
--- a/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp
+++ b/alib2data/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.cpp
@@ -153,6 +153,6 @@ void SuffixTrieTerminatingSymbol::compose ( std::deque < sax::Token > & out ) co
 
 namespace alib {
 
-xmlApi < alib::Object >::ParserRegister < indexes::SuffixTrieTerminatingSymbol > suffixTreeTerminatingSymbolParserRegister = xmlApi < alib::Object >::ParserRegister < indexes::SuffixTrieTerminatingSymbol > ( indexes::SuffixTrieTerminatingSymbol::XML_TAG_NAME, indexes::SuffixTrieTerminatingSymbol::parse );
+auto suffixTreeTerminatingSymbolParserRegister = xmlApi < alib::Object >::ParserRegister < indexes::SuffixTrieTerminatingSymbol > ();
 
 } /* namespace alib */
diff --git a/alib2data/src/label/HexavigesimalLabel.cpp b/alib2data/src/label/HexavigesimalLabel.cpp
index 272fa1a7dfc0117abeba07c5c8858002fc447a44..d9c426dddd8a0d7baca8b730aaca75125b670bd4 100644
--- a/alib2data/src/label/HexavigesimalLabel.cpp
+++ b/alib2data/src/label/HexavigesimalLabel.cpp
@@ -73,7 +73,7 @@ LabelBase* HexavigesimalLabel::inc() && {
 
 namespace alib {
 
-xmlApi<label::Label>::ParserRegister<label::HexavigesimalLabel> hexavigesimalLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::HexavigesimalLabel>(label::HexavigesimalLabel::XML_TAG_NAME, label::HexavigesimalLabel::parse);
-xmlApi<alib::Object>::ParserRegister<label::HexavigesimalLabel> hexavigesimalLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::HexavigesimalLabel>(label::HexavigesimalLabel::XML_TAG_NAME, label::HexavigesimalLabel::parse);
+auto hexavigesimalLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::HexavigesimalLabel>();
+auto hexavigesimalLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::HexavigesimalLabel>();
 
 } /* namespace alib */
diff --git a/alib2data/src/label/LabelPairLabel.cpp b/alib2data/src/label/LabelPairLabel.cpp
index 424cfd5beed7dba96d55d3df7059dc0a409564fb..5d259bc66fb06720878d558dab5934f4841811a2 100644
--- a/alib2data/src/label/LabelPairLabel.cpp
+++ b/alib2data/src/label/LabelPairLabel.cpp
@@ -83,7 +83,7 @@ LabelBase* LabelPairLabel::inc() && {
 
 namespace alib {
 
-xmlApi<label::Label>::ParserRegister<label::LabelPairLabel> labelPairLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::LabelPairLabel>(label::LabelPairLabel::XML_TAG_NAME, label::LabelPairLabel::parse);
-xmlApi<alib::Object>::ParserRegister<label::LabelPairLabel> labelPairLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::LabelPairLabel>(label::LabelPairLabel::XML_TAG_NAME, label::LabelPairLabel::parse);
+auto labelPairLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::LabelPairLabel>();
+auto labelPairLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::LabelPairLabel>();
 
 } /* namespace alib */
diff --git a/alib2data/src/label/LabelSetLabel.cpp b/alib2data/src/label/LabelSetLabel.cpp
index cdc5277786c8a403179add06172658ab331739aa..672991aa2a1de0d76769c13a6c6132f234b89971 100644
--- a/alib2data/src/label/LabelSetLabel.cpp
+++ b/alib2data/src/label/LabelSetLabel.cpp
@@ -88,7 +88,7 @@ LabelBase* LabelSetLabel::inc() && {
 
 namespace alib {
 
-xmlApi<label::Label>::ParserRegister<label::LabelSetLabel> labelSetLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::LabelSetLabel>(label::LabelSetLabel::XML_TAG_NAME, label::LabelSetLabel::parse);
-xmlApi<alib::Object>::ParserRegister<label::LabelSetLabel> labelSetLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::LabelSetLabel>(label::LabelSetLabel::XML_TAG_NAME, label::LabelSetLabel::parse);
+auto labelSetLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::LabelSetLabel>();
+auto labelSetLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::LabelSetLabel>();
 
 } /* namespace alib */
diff --git a/alib2data/src/label/ObjectLabel.cpp b/alib2data/src/label/ObjectLabel.cpp
index 5d40ef75a46702266e0166519b68235c82005e92..bee9031b2b3c928ef92ccff4d8c8c85d92c36105 100644
--- a/alib2data/src/label/ObjectLabel.cpp
+++ b/alib2data/src/label/ObjectLabel.cpp
@@ -69,7 +69,7 @@ LabelBase* ObjectLabel::inc() && {
 
 namespace alib {
 
-xmlApi<label::Label>::ParserRegister<label::ObjectLabel> objectLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::ObjectLabel>(label::ObjectLabel::XML_TAG_NAME, label::ObjectLabel::parse);
-xmlApi<alib::Object>::ParserRegister<label::ObjectLabel> objectLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::ObjectLabel>(label::ObjectLabel::XML_TAG_NAME, label::ObjectLabel::parse);
+auto objectLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::ObjectLabel>();
+auto objectLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::ObjectLabel>();
 
 } /* namespace alib */
diff --git a/alib2data/src/label/PrimitiveLabel.cpp b/alib2data/src/label/PrimitiveLabel.cpp
index a895a07b842ec32863088450b9c7f28081d17ec9..9ab17856538c597e3c02514ea766a1c384e57124 100644
--- a/alib2data/src/label/PrimitiveLabel.cpp
+++ b/alib2data/src/label/PrimitiveLabel.cpp
@@ -74,7 +74,7 @@ LabelBase* PrimitiveLabel::inc() && {
 
 namespace alib {
 
-xmlApi<label::Label>::ParserRegister<label::PrimitiveLabel> primitiveLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::PrimitiveLabel>(label::PrimitiveLabel::XML_TAG_NAME, label::PrimitiveLabel::parse);
-xmlApi<alib::Object>::ParserRegister<label::PrimitiveLabel> primitiveLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::PrimitiveLabel>(label::PrimitiveLabel::XML_TAG_NAME, label::PrimitiveLabel::parse);
+auto primitiveLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::PrimitiveLabel>();
+auto primitiveLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::PrimitiveLabel>();
 
 } /* namespace alib */
diff --git a/alib2data/src/label/UniqueLabel.cpp b/alib2data/src/label/UniqueLabel.cpp
index eb5c4e378a194f6333b7a1209424cc6116cc123b..990f46e8a363531638052a304a16a0bab146fde7 100644
--- a/alib2data/src/label/UniqueLabel.cpp
+++ b/alib2data/src/label/UniqueLabel.cpp
@@ -91,7 +91,7 @@ LabelBase* UniqueLabel::inc() && {
 
 namespace alib {
 
-xmlApi<label::Label>::ParserRegister<label::UniqueLabel> uniqueLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::UniqueLabel>(label::UniqueLabel::XML_TAG_NAME, label::UniqueLabel::parse);
-xmlApi<alib::Object>::ParserRegister<label::UniqueLabel> uniqueLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::UniqueLabel>(label::UniqueLabel::XML_TAG_NAME, label::UniqueLabel::parse);
+auto uniqueLabelParserRegister = xmlApi<label::Label>::ParserRegister<label::UniqueLabel>();
+auto uniqueLabelParserRegister2 = xmlApi<alib::Object>::ParserRegister<label::UniqueLabel>();
 
 } /* namespace alib */
diff --git a/alib2data/src/object/Void.cpp b/alib2data/src/object/Void.cpp
index f1c32c559be0f36a8c7cca908fa078edb8ce2513..b3b7a31e0c1d75682f21355cf58df2bfe1a3da0c 100644
--- a/alib2data/src/object/Void.cpp
+++ b/alib2data/src/object/Void.cpp
@@ -55,7 +55,7 @@ void Void::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<alib::Object>::ParserRegister<alib::Void> voidParserRegister2 = xmlApi<alib::Object>::ParserRegister<alib::Void>(alib::Void::XML_TAG_NAME, alib::Void::parse);
+auto voidParserRegister = xmlApi<alib::Object>::ParserRegister<alib::Void>();
 
 } /* namespace alib */
 
diff --git a/alib2data/src/primitive/Bool.cpp b/alib2data/src/primitive/Bool.cpp
index 2c541e97dcfd83dad3f003d640eec44eb0e10d93..41bef5e8b44de19637ed8c9261d82b98e06ee80e 100644
--- a/alib2data/src/primitive/Bool.cpp
+++ b/alib2data/src/primitive/Bool.cpp
@@ -102,7 +102,7 @@ void xmlApi<bool>::compose(std::deque<sax::Token>& output, bool data) {
 	primitive::Bool::compose(output, data);
 }
 
-xmlApi<primitive::Primitive>::ParserRegister<primitive::Bool> boolParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Bool>(primitive::Bool::XML_TAG_NAME, primitive::Bool::parse);
-xmlApi<alib::Object>::ParserRegister<primitive::Bool> boolParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Bool>(primitive::Bool::XML_TAG_NAME, primitive::Bool::parse);
+auto boolParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Bool>();
+auto boolParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Bool>();
 
 } /* namespace alib */
diff --git a/alib2data/src/primitive/Character.cpp b/alib2data/src/primitive/Character.cpp
index e2c81ff9033312d0f86ae73452533c7d7f90cd2a..f74c33f516b0c7c41486be5ea2d2b5c7ed7b91be 100644
--- a/alib2data/src/primitive/Character.cpp
+++ b/alib2data/src/primitive/Character.cpp
@@ -91,8 +91,8 @@ void xmlApi<char>::compose(std::deque<sax::Token>& output, char data) {
 	primitive::Character::compose(output, data);
 }
 
-xmlApi<primitive::Primitive>::ParserRegister<primitive::Character> characterParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Character>(primitive::Character::XML_TAG_NAME, primitive::Character::parse);
-xmlApi<alib::Object>::ParserRegister<primitive::Character> characterParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Character>(primitive::Character::XML_TAG_NAME, primitive::Character::parse);
+auto characterParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Character>();
+auto characterParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Character>();
 
 } /* namespace alib */
 
diff --git a/alib2data/src/primitive/Integer.cpp b/alib2data/src/primitive/Integer.cpp
index e0af002d433e846e1a4b7402f56546766605093d..918e3062e78c4cb219b08db14e28bb5285cd2177 100644
--- a/alib2data/src/primitive/Integer.cpp
+++ b/alib2data/src/primitive/Integer.cpp
@@ -91,8 +91,8 @@ void xmlApi<int>::compose(std::deque<sax::Token>& output, int data) {
 	primitive::Integer::compose(output, data);
 }
 
-xmlApi<primitive::Primitive>::ParserRegister<primitive::Integer> integerParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Integer>(primitive::Integer::XML_TAG_NAME, primitive::Integer::parse);
-xmlApi<alib::Object>::ParserRegister<primitive::Integer> integerParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Integer>(primitive::Integer::XML_TAG_NAME, primitive::Integer::parse);
+auto integerParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Integer>();
+auto integerParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Integer>();
 
 } /* namespace alib */
 
diff --git a/alib2data/src/primitive/String.cpp b/alib2data/src/primitive/String.cpp
index 1bec50f1f68d3ba2858d78aaa06608859eeb40df..2e4eb5dfea54cf98abf26772e3165f4bba550bfa 100644
--- a/alib2data/src/primitive/String.cpp
+++ b/alib2data/src/primitive/String.cpp
@@ -98,8 +98,8 @@ void xmlApi<std::string>::compose(std::deque<sax::Token>& output, std::string da
 	primitive::String::compose(output, data);
 }
 
-xmlApi<primitive::Primitive>::ParserRegister<primitive::String> stringParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::String>(primitive::String::XML_TAG_NAME, primitive::String::parse);
-xmlApi<alib::Object>::ParserRegister<primitive::String> stringParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::String>(primitive::String::XML_TAG_NAME, primitive::String::parse);
+auto stringParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::String>();
+auto stringParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::String>();
 
 } /* namespace alib */
 
diff --git a/alib2data/src/primitive/Unsigned.cpp b/alib2data/src/primitive/Unsigned.cpp
index ed56fc372d3c975318e8ed691d04ec7fb89a34fa..05e0764b25045bb2e8aa835cbde43c029893c565 100644
--- a/alib2data/src/primitive/Unsigned.cpp
+++ b/alib2data/src/primitive/Unsigned.cpp
@@ -91,8 +91,8 @@ void xmlApi<unsigned>::compose(std::deque<sax::Token>& output, unsigned data) {
 	primitive::Unsigned::compose(output, data);
 }
 
-xmlApi<primitive::Primitive>::ParserRegister<primitive::Unsigned> unsignedParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Unsigned>(primitive::Unsigned::XML_TAG_NAME, primitive::Unsigned::parse);
-xmlApi<alib::Object>::ParserRegister<primitive::Unsigned> unsignedParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Unsigned>(primitive::Unsigned::XML_TAG_NAME, primitive::Unsigned::parse);
+auto unsignedParserRegister = xmlApi<primitive::Primitive>::ParserRegister<primitive::Unsigned>();
+auto unsignedParserRegister2 = xmlApi<alib::Object>::ParserRegister<primitive::Unsigned>();
 
 } /* namespace alib */
 
diff --git a/alib2data/src/regexp/formal/FormalRegExp.cpp b/alib2data/src/regexp/formal/FormalRegExp.cpp
index bf94ce6c556e1763d0efb4e9c9babe097854fd2b..3b8f2234891febf54b37b2970371b8bc645a4bf1 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.cpp
+++ b/alib2data/src/regexp/formal/FormalRegExp.cpp
@@ -181,8 +181,8 @@ void FormalRegExp::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < regexp::RegExp >::ParserRegister < regexp::FormalRegExp > formalRegExpParserRegister = xmlApi < regexp::RegExp >::ParserRegister < regexp::FormalRegExp > ( regexp::FormalRegExp::XML_TAG_NAME, regexp::FormalRegExp::parse );
-xmlApi < alib::Object >::ParserRegister < regexp::FormalRegExp > formalRegExpParserRegister2  = xmlApi < alib::Object >::ParserRegister < regexp::FormalRegExp > ( regexp::FormalRegExp::XML_TAG_NAME, regexp::FormalRegExp::parse );
+auto formalRegExpParserRegister = xmlApi < regexp::RegExp >::ParserRegister < regexp::FormalRegExp > ();
+auto formalRegExpParserRegister2  = xmlApi < alib::Object >::ParserRegister < regexp::FormalRegExp > ();
 
 auto FormalRegExpFromUnboundedRegExp = castApi::CastRegister < regexp::FormalRegExp, regexp::UnboundedRegExp > ( );
 auto FormalRegExpCastBinder = castApi::CastPoolStringBinder < regexp::FormalRegExp > ( regexp::FormalRegExp::XML_TAG_NAME );
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
index c01f1e011bdcc5870ec3a55760560926bb822496..d2e625846602b1481394b506ff9ea2e982706230 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
@@ -182,8 +182,8 @@ void UnboundedRegExp::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < regexp::RegExp >::ParserRegister < regexp::UnboundedRegExp > unboundedRegExpParserRegister = xmlApi < regexp::RegExp >::ParserRegister < regexp::UnboundedRegExp > ( regexp::UnboundedRegExp::XML_TAG_NAME, regexp::UnboundedRegExp::parse );
-xmlApi < alib::Object >::ParserRegister < regexp::UnboundedRegExp > unboundedRegExpParserRegister2	= xmlApi < alib::Object >::ParserRegister < regexp::UnboundedRegExp > ( regexp::UnboundedRegExp::XML_TAG_NAME, regexp::UnboundedRegExp::parse );
+auto unboundedRegExpParserRegister = xmlApi < regexp::RegExp >::ParserRegister < regexp::UnboundedRegExp > ();
+auto unboundedRegExpParserRegister2 = xmlApi < alib::Object >::ParserRegister < regexp::UnboundedRegExp > ();
 
 auto UnboundedRegExpFromFormalRegExp = castApi::CastRegister < regexp::UnboundedRegExp, regexp::FormalRegExp > ( );
 auto UnboundedRegExpCastBinder = castApi::CastPoolStringBinder < regexp::UnboundedRegExp > ( regexp::UnboundedRegExp::XML_TAG_NAME );
diff --git a/alib2data/src/string/CyclicString.cpp b/alib2data/src/string/CyclicString.cpp
index 680802123586233832ec7a46753ce8300c8bc00e..af20e72676b43241bbe3635b8f8ed5f79af0f703 100644
--- a/alib2data/src/string/CyclicString.cpp
+++ b/alib2data/src/string/CyclicString.cpp
@@ -130,8 +130,8 @@ void CyclicString::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<string::String>::ParserRegister<string::CyclicString> cyclicStringParserRegister = xmlApi<string::String>::ParserRegister<string::CyclicString>(string::CyclicString::XML_TAG_NAME, string::CyclicString::parse);
-xmlApi<alib::Object>::ParserRegister<string::CyclicString> cyclicStringParserRegister2 = xmlApi<alib::Object>::ParserRegister<string::CyclicString>(string::CyclicString::XML_TAG_NAME, string::CyclicString::parse);
+auto cyclicStringParserRegister = xmlApi<string::String>::ParserRegister<string::CyclicString>();
+auto cyclicStringParserRegister2 = xmlApi<alib::Object>::ParserRegister<string::CyclicString>();
 
 auto CyclicStringFromEpsilon = castApi::CastRegister<string::CyclicString, string::Epsilon>();
 auto CyclicStringCastBinder = castApi::CastPoolStringBinder<string::CyclicString>(string::CyclicString::XML_TAG_NAME);
diff --git a/alib2data/src/string/Epsilon.cpp b/alib2data/src/string/Epsilon.cpp
index e06acde4ce4402cdccb650918f9b0dcb47797415..ca7c49f175cdcbbc12d8651e34d5dc864ac9e451 100644
--- a/alib2data/src/string/Epsilon.cpp
+++ b/alib2data/src/string/Epsilon.cpp
@@ -76,7 +76,7 @@ void Epsilon::compose(std::deque<sax::Token>& out) const {
 
 namespace alib {
 
-xmlApi<string::String>::ParserRegister<string::Epsilon> epsilonParserRegister = xmlApi<string::String>::ParserRegister<string::Epsilon>(string::Epsilon::XML_TAG_NAME, string::Epsilon::parse);
-xmlApi<alib::Object>::ParserRegister<string::Epsilon> epsilonParserRegister2 = xmlApi<alib::Object>::ParserRegister<string::Epsilon>(string::Epsilon::XML_TAG_NAME, string::Epsilon::parse);
+auto epsilonParserRegister = xmlApi<string::String>::ParserRegister<string::Epsilon>();
+auto epsilonParserRegister2 = xmlApi<alib::Object>::ParserRegister<string::Epsilon>();
 
 } /* namespace alib */
diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp
index e945ee8d600fcc63e3b12a78067093e553fdb64c..66578f786985f63ca42d67c5a9793836ba53da32 100644
--- a/alib2data/src/string/LinearString.cpp
+++ b/alib2data/src/string/LinearString.cpp
@@ -185,8 +185,8 @@ void LinearString::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < string::String >::ParserRegister < string::LinearString > linearStringParserRegister = xmlApi < string::String >::ParserRegister < string::LinearString > ( string::LinearString::XML_TAG_NAME, string::LinearString::parse );
-xmlApi < alib::Object >::ParserRegister < string::LinearString > linearStringParserRegister2  = xmlApi < alib::Object >::ParserRegister < string::LinearString > ( string::LinearString::XML_TAG_NAME, string::LinearString::parse );
+auto linearStringParserRegister = xmlApi < string::String >::ParserRegister < string::LinearString > ();
+auto linearStringParserRegister2  = xmlApi < alib::Object >::ParserRegister < string::LinearString > ();
 
 auto LinearStringFromEpsilon = castApi::CastRegister < string::LinearString, string::Epsilon > ( );
 auto LinearStringFromPrefixRankedTree = castApi::CastRegister < string::LinearString, tree::PrefixRankedTree > ( );
diff --git a/alib2data/src/string/LinearStringTerminatingSymbol.cpp b/alib2data/src/string/LinearStringTerminatingSymbol.cpp
index f1b596a3f425278fe169bde88fa23103395d9e48..24de65e4092ded1991d41fcfc9f0b5169a6d67e3 100644
--- a/alib2data/src/string/LinearStringTerminatingSymbol.cpp
+++ b/alib2data/src/string/LinearStringTerminatingSymbol.cpp
@@ -136,7 +136,7 @@ void LinearStringTerminatingSymbol::compose ( std::deque < sax::Token > & out )
 
 namespace alib {
 
-xmlApi < string::String >::ParserRegister < string::LinearStringTerminatingSymbol > linearStringTerminatingSymbolParserRegister = xmlApi < string::String >::ParserRegister < string::LinearStringTerminatingSymbol > ( string::LinearStringTerminatingSymbol::XML_TAG_NAME, string::LinearStringTerminatingSymbol::parse );
-xmlApi < alib::Object >::ParserRegister < string::LinearStringTerminatingSymbol > linearStringTerminatingSymbolParserRegister2	= xmlApi < alib::Object >::ParserRegister < string::LinearStringTerminatingSymbol > ( string::LinearStringTerminatingSymbol::XML_TAG_NAME, string::LinearStringTerminatingSymbol::parse );
+auto linearStringTerminatingSymbolParserRegister = xmlApi < string::String >::ParserRegister < string::LinearStringTerminatingSymbol > ();
+auto linearStringTerminatingSymbolParserRegister2 = xmlApi < alib::Object >::ParserRegister < string::LinearStringTerminatingSymbol > ();
 
 } /* namespace alib */
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
index be331694b440e5dbbbef64a045d1908fac2afd95..8f0793468541afb012f50e25b86dabefb40a54e0 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
@@ -213,9 +213,9 @@ void PrefixRankedBarPattern::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarPattern > prefixRankedBarPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse );
-xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarPattern > prefixRankedBarPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse );
-xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > prefixRankedBarPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > ( tree::PrefixRankedBarPattern::XML_TAG_NAME, tree::PrefixRankedBarPattern::parse );
+auto prefixRankedBarPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarPattern > ();
+auto prefixRankedBarPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarPattern > ();
+auto prefixRankedBarPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarPattern > ();
 
 auto PrefixRankedBarPatternFromRankedPattern = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::RankedPattern > ( );
 auto PrefixRankedBarPatternFromRankedTree = castApi::CastRegister < tree::PrefixRankedBarPattern, tree::PrefixRankedBarTree > ( );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
index 1a3cb4f37373b4464e7e8c13e1bf20c9b35199d2..9edd1e8e705d2bb8149e10d1c2415dca2ce3d359 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
@@ -185,9 +185,9 @@ void PrefixRankedBarTree::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarTree > prefixRankedBarTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse );
-xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarTree > prefixRankedBarTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse );
-xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > prefixRankedBarTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME, tree::PrefixRankedBarTree::parse );
+auto prefixRankedBarTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedBarTree > ();
+auto prefixRankedBarTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedBarTree > ();
+auto prefixRankedBarTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedBarTree > ();
 
 auto PrefixRankedBarTreeFromRankedTree = castApi::CastRegister < tree::PrefixRankedBarTree, tree::RankedTree > ( );
 auto PrefixRankedBarTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedBarTree > ( tree::PrefixRankedBarTree::XML_TAG_NAME );
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
index 549d87f2e2c3d091b3772457540f2384f7e8769d..7d068a3929f03fb68f9eaaaa0966959f3d61176f 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
@@ -174,9 +174,9 @@ void PrefixRankedPattern::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedPattern > prefixRankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME, tree::PrefixRankedPattern::parse );
-xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedPattern > prefixRankedPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME, tree::PrefixRankedPattern::parse );
-xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedPattern > prefixRankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME, tree::PrefixRankedPattern::parse );
+auto prefixRankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedPattern > ();
+auto prefixRankedPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedPattern > ();
+auto prefixRankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedPattern > ();
 
 auto PrefixRankedPatternFromRankedPattern = castApi::CastRegister < tree::PrefixRankedPattern, tree::RankedPattern > ( );
 auto PrefixRankedPatternCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedPattern > ( tree::PrefixRankedPattern::XML_TAG_NAME );
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
index 0f0d28e5033979df144d14a194e32530f74bcf9b..d00f2f2bae565bd235adc23525f9294fe32d951b 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
@@ -159,9 +159,9 @@ void PrefixRankedTree::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedTree > prefixRankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME, tree::PrefixRankedTree::parse );
-xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedTree > prefixRankedTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME, tree::PrefixRankedTree::parse );
-xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedTree > prefixRankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME, tree::PrefixRankedTree::parse );
+auto prefixRankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixRankedTree > ();
+auto prefixRankedTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::PrefixRankedTree > ();
+auto prefixRankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixRankedTree > ();
 
 auto PrefixRankedTreeFromRankedTree = castApi::CastRegister < tree::PrefixRankedTree, tree::RankedTree > ( );
 auto PrefixRankedTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixRankedTree > ( tree::PrefixRankedTree::XML_TAG_NAME );
diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp
index cb0a9b504b5afe90efc6992d1b75bbc041747916..11c94cb324dc766caa72fb1f33e6be383793a100 100644
--- a/alib2data/src/tree/ranked/RankedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedPattern.cpp
@@ -167,9 +167,9 @@ void RankedPattern::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < tree::Tree >::ParserRegister < tree::RankedPattern > rankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse );
-xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedPattern > rankedPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse );
-xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > rankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME, tree::RankedPattern::parse );
+auto rankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedPattern > ();
+auto rankedPatternParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedPattern > ();
+auto rankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedPattern > ();
 
 auto RankedPatternFromUnrankedPattern = castApi::CastRegister < tree::RankedPattern, tree::UnrankedPattern > ( );
 auto RankedPatternCastBinder = castApi::CastPoolStringBinder < tree::RankedPattern > ( tree::RankedPattern::XML_TAG_NAME );
diff --git a/alib2data/src/tree/ranked/RankedTree.cpp b/alib2data/src/tree/ranked/RankedTree.cpp
index b372b10541573c67eda53cb76b25aef17d349dde..d5bbe91d20b8cf4e43998434d48afe4d7d4e145c 100644
--- a/alib2data/src/tree/ranked/RankedTree.cpp
+++ b/alib2data/src/tree/ranked/RankedTree.cpp
@@ -158,9 +158,9 @@ void RankedTree::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < tree::Tree >::ParserRegister < tree::RankedTree > rankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse );
-xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedTree > rankedTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse );
-xmlApi < alib::Object >::ParserRegister < tree::RankedTree > rankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME, tree::RankedTree::parse );
+auto rankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::RankedTree > ();
+auto rankedTreeParserRegister2 = xmlApi < tree::RankedTreeWrapper >::ParserRegister < tree::RankedTree > ();
+auto rankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::RankedTree > ();
 
 auto RankedTreeFromUnrankedTree = castApi::CastRegister < tree::RankedTree, tree::UnrankedTree > ( );
 auto RankedTreeCastBinder = castApi::CastPoolStringBinder < tree::RankedTree > ( tree::RankedTree::XML_TAG_NAME );
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.cpp b/alib2data/src/tree/unranked/PrefixBarTree.cpp
index 57e4cb7c77ff8bc6743fd30bb4a9e475f91d4460..14eff02090ea718bdeae14f1715db17923e5fbde 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.cpp
+++ b/alib2data/src/tree/unranked/PrefixBarTree.cpp
@@ -176,9 +176,9 @@ void PrefixBarTree::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < tree::Tree >::ParserRegister < tree::PrefixBarTree > prefixBarTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixBarTree > ( tree::PrefixBarTree::XML_TAG_NAME, tree::PrefixBarTree::parse );
-xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::PrefixBarTree > prefixBarTreeParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::PrefixBarTree > ( tree::PrefixBarTree::XML_TAG_NAME, tree::PrefixBarTree::parse );
-xmlApi < alib::Object >::ParserRegister < tree::PrefixBarTree > prefixBarTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixBarTree > ( tree::PrefixBarTree::XML_TAG_NAME, tree::PrefixBarTree::parse );
+auto prefixBarTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::PrefixBarTree > ();
+auto prefixBarTreeParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::PrefixBarTree > ();
+auto prefixBarTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::PrefixBarTree > ();
 
 auto PrefixBarTreeFromUnrankedTree = castApi::CastRegister < tree::PrefixBarTree, tree::UnrankedTree > ( );
 auto PrefixBarTreeCastBinder = castApi::CastPoolStringBinder < tree::PrefixBarTree > ( tree::PrefixBarTree::XML_TAG_NAME );
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.cpp b/alib2data/src/tree/unranked/UnrankedPattern.cpp
index 48f1cc1777863f60906ce312ae53cdf75d5db686..09bf2823bc10b47cb38951dfacc95492d85b6551 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp
@@ -167,9 +167,9 @@ void UnrankedPattern::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < tree::Tree >::ParserRegister < tree::UnrankedPattern > unrankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse );
-xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedPattern > unrankedPatternParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse );
-xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > unrankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME, tree::UnrankedPattern::parse );
+auto unrankedPatternParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::UnrankedPattern > ();
+auto unrankedPatternParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedPattern > ();
+auto unrankedPatternParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedPattern > ();
 
 auto UnrankedPatternFromRankedPattern = castApi::CastRegister < tree::UnrankedPattern, tree::RankedPattern > ( );
 auto UnrankedPatternCastBinder = castApi::CastPoolStringBinder < tree::UnrankedPattern > ( tree::UnrankedPattern::XML_TAG_NAME );
diff --git a/alib2data/src/tree/unranked/UnrankedTree.cpp b/alib2data/src/tree/unranked/UnrankedTree.cpp
index 1e8102d773293841bc892f53f85e7b2d43dde521..b701d229bfb00d488156cbd48660a7919c489686 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnrankedTree.cpp
@@ -158,9 +158,9 @@ void UnrankedTree::compose ( std::deque < sax::Token > & out ) const {
 
 namespace alib {
 
-xmlApi < tree::Tree >::ParserRegister < tree::UnrankedTree > unrankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse );
-xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedTree > unrankedTreeParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse );
-xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > unrankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME, tree::UnrankedTree::parse );
+auto unrankedTreeParserRegister = xmlApi < tree::Tree >::ParserRegister < tree::UnrankedTree > ();
+auto unrankedTreeParserRegister2 = xmlApi < tree::UnrankedTreeWrapper >::ParserRegister < tree::UnrankedTree > ();
+auto unrankedTreeParserRegister3 = xmlApi < alib::Object >::ParserRegister < tree::UnrankedTree > ();
 
 auto UnrankedTreeFromRankedTree = castApi::CastRegister < tree::UnrankedTree, tree::RankedTree > ( );
 auto UnrankedTreeCastBinder = castApi::CastPoolStringBinder < tree::UnrankedTree > ( tree::UnrankedTree::XML_TAG_NAME );