diff --git a/alib2algo/src/regexp/properties/RegExpEmpty.h b/alib2algo/src/regexp/properties/RegExpEmpty.h
index 393e5a40f9910f1e4f3facd77e2083f4384b27bc..33351c47136e7438898b1beae2abcdf83b44fe9f 100644
--- a/alib2algo/src/regexp/properties/RegExpEmpty.h
+++ b/alib2algo/src/regexp/properties/RegExpEmpty.h
@@ -9,9 +9,9 @@
 #define REG_EXP_EMPTY_H_
 
 #include <regexp/formal/FormalRegExp.h>
-#include <regexp/formal/FormalRegExpElement.h>
+#include <regexp/formal/FormalRegExpElements.h>
 #include <regexp/unbounded/UnboundedRegExp.h>
-#include <regexp/unbounded/UnboundedRegExpElement.h>
+#include <regexp/unbounded/UnboundedRegExpElements.h>
 
 namespace regexp {
 
diff --git a/alib2algo/src/regexp/properties/RegExpEpsilon.h b/alib2algo/src/regexp/properties/RegExpEpsilon.h
index ca66c89127ac8b09fd196c1e9a24887326dafb2f..95c26996c51c67c5604db2018e7ef4a35341336a 100644
--- a/alib2algo/src/regexp/properties/RegExpEpsilon.h
+++ b/alib2algo/src/regexp/properties/RegExpEpsilon.h
@@ -9,9 +9,9 @@
 #define REG_EXP_EPSILON_H_
 
 #include <regexp/formal/FormalRegExp.h>
-#include <regexp/formal/FormalRegExpElement.h>
+#include <regexp/formal/FormalRegExpElements.h>
 #include <regexp/unbounded/UnboundedRegExp.h>
-#include <regexp/unbounded/UnboundedRegExpElement.h>
+#include <regexp/unbounded/UnboundedRegExpElements.h>
 
 namespace regexp {
 
diff --git a/alib2algo/test-src/automaton/convert/FTAtoPDATest.cpp b/alib2algo/test-src/automaton/convert/FTAtoPDATest.cpp
index b162b11fe7e3bb64c9c88a8f8033ec055c7e3c4b..a576e80e525544cfd56b93cfd44b884c0f714e5b 100644
--- a/alib2algo/test-src/automaton/convert/FTAtoPDATest.cpp
+++ b/alib2algo/test-src/automaton/convert/FTAtoPDATest.cpp
@@ -4,6 +4,11 @@
 #include <automaton/TA/DFTA.h>
 #include <automaton/TA/NFTA.h>
 
+#include <automaton/PDA/DPDA.h>
+#include <automaton/xml/PDA/DPDA.h>
+#include <automaton/PDA/NPDA.h>
+#include <automaton/xml/PDA/NPDA.h>
+
 #include "automaton/convert/ToPostfixPushdownAutomaton.h"
 
 #include <factory/XmlDataFactory.hpp>
diff --git a/alib2data/src/automaton/AutomatonBase.h b/alib2data/src/automaton/AutomatonBase.h
index 9529fb02a8ce1ccee538e524e731527749666069..78b355993982dad368103982b3a80b687c67cb4d 100644
--- a/alib2data/src/automaton/AutomatonBase.h
+++ b/alib2data/src/automaton/AutomatonBase.h
@@ -10,8 +10,6 @@
 
 #include <object/ObjectBase.h>
 
-#include <core/xmlApi.hpp>
-
 namespace automaton {
 
 /**
@@ -25,29 +23,4 @@ public:
 
 } /* namespace automaton */
 
-namespace core {
-
-template < typename Type >
-struct xmlApi < Type, typename std::enable_if < std::is_base_of < automaton::AutomatonBase, Type >::value >::type > {
-	static Type parse ( ext::deque < sax::Token >::iterator & input ) {
-		return Type::parse ( input );
-	}
-
-	static bool first ( const ext::deque < sax::Token >::const_iterator & input ) {
-		return sax::FromXMLParserHelper::isToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName() );
-	}
-
-	static std::string xmlTagName ( ) {
-		return Type::getXmlTagName();
-	}
-
-	static void compose ( ext::deque < sax::Token > & output, const Type & data ) {
-		Type::compose ( output, data );
-	}
-
-};
-
-} /* namespace core */
-
 #endif /* AUTOMATON_BASE_H_ */
-
diff --git a/alib2data/src/automaton/FSM/CompactNFA.cpp b/alib2data/src/automaton/FSM/CompactNFA.cpp
index a401602628de97365129ad09fc5217bc66c0837f..5c5ef48446db3c242be7e92c78440c3279ccff35 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactNFA.cpp
@@ -6,11 +6,8 @@
  */
 
 #include "CompactNFA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
@@ -20,12 +17,6 @@ static auto components = registration::ComponentRegister < automaton::CompactNFA
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::CompactNFA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::CompactNFA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::CompactNFA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::CompactNFA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::CompactNFA < > > ( );
-
 static auto compactNFAFromDFA = registration::CastRegister < automaton::CompactNFA < >, automaton::DFA < > > ( );
 static auto compactNFAFromNFA = registration::CastRegister < automaton::CompactNFA < >, automaton::NFA < > > ( );
 static auto compactNFAFromMultiInitialStateNFA = registration::CastRegister < automaton::CompactNFA < >, automaton::MultiInitialStateNFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h
index 3724d787f4b958cc83cef8a20d63724a5660e00d..42de0344f9c9551588832e6eac07e56f139647a3 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/FSM/CompactNFA.h
@@ -31,19 +31,16 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <common/createUnique.hpp>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
-#include "../../label/InitialStateLabel.h"
+#include <label/InitialStateLabel.h>
 
 #include <core/normalize.hpp>
 
@@ -422,52 +419,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "CompactNFA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static CompactNFA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, CompactNFA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const CompactNFA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const CompactNFA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -653,69 +604,6 @@ CompactNFA < SymbolType, StateType >::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template < class SymbolType, class StateType >
-CompactNFA < SymbolType, StateType > CompactNFA < SymbolType, StateType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, CompactNFA < SymbolType, StateType >::getXmlTagName() );
-
-	ext::set < StateType > states = AutomatonFromXMLParser::parseStates < StateType > ( input );
-	ext::set < SymbolType > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
-	StateType initialState = AutomatonFromXMLParser::parseInitialState < StateType > ( input );
-	ext::set < StateType > finalStates = AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
-
-	CompactNFA < SymbolType, StateType > automaton ( std::move ( initialState ) );
-
-	automaton.setStates ( std::move ( states ) );
-	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
-	automaton.setFinalStates ( std::move ( finalStates ) );
-
-	AutomatonFromXMLParser::parseTransitions < CompactNFA > ( input, automaton );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, CompactNFA < SymbolType, StateType >::getXmlTagName() );
-	return automaton;
-}
-
-template < class SymbolType, class StateType >
-void CompactNFA < SymbolType, StateType >::parseTransition ( ext::deque < sax::Token >::iterator & input, CompactNFA & automaton ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
-	ext::vector < SymbolType > inputString = AutomatonFromXMLParser::parseTransitionInputSymbolMultiple < SymbolType > ( input );
-	StateType to = AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
-
-	automaton.addTransition ( std::move ( from ), std::move ( inputString ), std::move ( to ) );
-}
-
-template < class SymbolType, class StateType >
-void CompactNFA < SymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const CompactNFA & automaton ) {
-	out.emplace_back ( CompactNFA < SymbolType, StateType >::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-
-	AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
-	AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
-	AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
-	AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
-	composeTransitions ( out, automaton );
-
-	out.emplace_back ( CompactNFA < SymbolType, StateType >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
-template < class SymbolType, class StateType >
-void CompactNFA < SymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const CompactNFA & automaton ) {
-	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
-
-	for ( const auto & transition : automaton.getTransitions ( ) )
-		for ( const auto & targetState : transition.second ) {
-			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
-
-			AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
-			AutomatonToXMLComposer::composeTransitionInputSymbolMultiple ( out, transition.first.second );
-			AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
-
-			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
-		}
-
-	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class StateType >
 object::ObjectBase* CompactNFA < SymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/FSM/DFA.cpp b/alib2data/src/automaton/FSM/DFA.cpp
index 7e3a84f688d5ee634d95b3d06d43679c8964e6f8..f23df78b19bbb92cdfa6a6b5f8a131a4c7c25c2c 100644
--- a/alib2data/src/automaton/FSM/DFA.cpp
+++ b/alib2data/src/automaton/FSM/DFA.cpp
@@ -6,20 +6,11 @@
  */
 
 #include "DFA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::DFA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::DFA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::DFA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::DFA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::DFA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h
index 5e7fbe08f52341653a206dd6eb336ba77ffe4028..abbe2f723a1a1195cf3cf91a01fd1e925506c223 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -31,14 +31,11 @@
 #include <alib/range>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -388,52 +385,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "DFA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static DFA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, DFA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const DFA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const DFA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -585,68 +536,6 @@ DFA<SymbolType, StateType>::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template<class SymbolType, class StateType >
-DFA<SymbolType, StateType> DFA<SymbolType, StateType>::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, DFA::getXmlTagName() );
-
-	ext::set < StateType > states = AutomatonFromXMLParser::parseStates < StateType > ( input );
-	ext::set < SymbolType > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
-	StateType initialState = AutomatonFromXMLParser::parseInitialState < StateType > ( input );
-	ext::set < StateType > finalStates = AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
-
-	DFA<SymbolType, StateType> automaton ( std::move ( initialState ) );
-
-	automaton.setStates ( std::move ( states ) );
-	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
-	automaton.setFinalStates ( std::move ( finalStates ) );
-
-	AutomatonFromXMLParser::parseTransitions < DFA > ( input, automaton );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, DFA::getXmlTagName() );
-	return automaton;
-}
-
-template<class SymbolType, class StateType >
-void DFA<SymbolType, StateType>::parseTransition ( ext::deque < sax::Token >::iterator & input, DFA<SymbolType, StateType> & automaton ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
-	SymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol < SymbolType > ( input );
-	StateType to = AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
-
-	automaton.addTransition ( std::move ( from ), std::move ( inputSymbol ), std::move ( to ) );
-}
-
-template<class SymbolType, class StateType >
-void DFA<SymbolType, StateType>::compose ( ext::deque < sax::Token > & out, const DFA & automaton ) {
-	out.emplace_back ( DFA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-
-	AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
-	AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
-	AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
-	AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
-	composeTransitions ( out, automaton );
-
-	out.emplace_back ( DFA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
-template<class SymbolType, class StateType >
-void DFA<SymbolType, StateType>::composeTransitions ( ext::deque < sax::Token > & out, const DFA & automaton ) {
-	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
-
-	for ( const auto & transition : automaton.getTransitions ( ) ) {
-		out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
-
-		AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
-		AutomatonToXMLComposer::composeTransitionInputSymbol ( out, transition.first.second );
-		AutomatonToXMLComposer::composeTransitionTo ( out, transition.second );
-
-		out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
-	}
-
-	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class StateType >
 object::ObjectBase* DFA < SymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.cpp b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
index afbbeae20514347b8067fc65676086aaaba6dbad..d02a3c8dbf18a70154a03668d5a616f59183982d 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
@@ -6,23 +6,14 @@
  */
 
 #include "EpsilonNFA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::EpsilonNFA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::EpsilonNFA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::EpsilonNFA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::EpsilonNFA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::EpsilonNFA < > > ( );
-
 static auto epsilonNFAFromDFA = registration::CastRegister < automaton::EpsilonNFA < >, automaton::DFA < > > ( );
 static auto epsilonNFAFromNFA = registration::CastRegister < automaton::EpsilonNFA < >, automaton::NFA < > > ( );
 static auto epsilonNFAFromMultiInitialStateNFA = registration::CastRegister < automaton::EpsilonNFA < >, automaton::MultiInitialStateNFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h
index a836c7d7e1cb1dc8efb89dd222e7942322df06a5..f0b7e8708690ea8f17566bc886d2c5d38545342f 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.h
@@ -30,7 +30,6 @@
 #include <ostream>
 #include <sstream>
 
-#include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
 #include <common/createUnique.hpp>
 #include <object/UniqueObject.h>
@@ -38,8 +37,6 @@
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -558,52 +555,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "EpsilonNFA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static EpsilonNFA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, EpsilonNFA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const EpsilonNFA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const EpsilonNFA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -910,69 +861,6 @@ EpsilonNFA < SymbolType, EpsilonType, StateType >::operator std::string ( ) cons
 	return ss.str ( );
 }
 
-template<class SymbolType, class EpsilonType, class StateType >
-EpsilonNFA < SymbolType, EpsilonType, StateType > EpsilonNFA < SymbolType, EpsilonType, StateType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, EpsilonNFA::getXmlTagName() );
-
-	ext::set < StateType > states = AutomatonFromXMLParser::parseStates < StateType > ( input );
-	ext::set < SymbolType > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
-	StateType initialState = AutomatonFromXMLParser::parseInitialState < StateType > ( input );
-	ext::set < StateType > finalStates = AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
-
-	EpsilonNFA < SymbolType, EpsilonType, StateType > automaton ( std::move ( initialState ) );
-
-	automaton.setStates ( std::move ( states ) );
-	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
-	automaton.setFinalStates ( std::move ( finalStates ) );
-
-	AutomatonFromXMLParser::parseTransitions < EpsilonNFA > ( input, automaton );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, EpsilonNFA::getXmlTagName() );
-	return automaton;
-}
-
-template<class SymbolType, class EpsilonType, class StateType >
-void EpsilonNFA < SymbolType, EpsilonType, StateType >::parseTransition ( ext::deque < sax::Token >::iterator & input, EpsilonNFA & automaton ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
-	ext::variant < EpsilonType, SymbolType > inputVariant = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol < EpsilonType, SymbolType > ( input );
-	StateType to = AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
-
-	automaton.addTransition ( std::move ( from ), std::move ( inputVariant ), std::move ( to ) );
-}
-
-template<class SymbolType, class EpsilonType, class StateType >
-void EpsilonNFA < SymbolType, EpsilonType, StateType >::compose ( ext::deque < sax::Token > & out, const EpsilonNFA & automaton ) {
-	out.emplace_back ( EpsilonNFA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-
-	AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
-	AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
-	AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
-	AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
-	composeTransitions ( out, automaton );
-
-	out.emplace_back ( EpsilonNFA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
-template<class SymbolType, class EpsilonType, class StateType >
-void EpsilonNFA < SymbolType, EpsilonType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const EpsilonNFA & automaton ) {
-	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
-
-	for ( const auto & transition : automaton.getTransitions ( ) )
-		for ( const auto & targetState : transition.second ) {
-			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
-
-			AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
-			AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol ( out, transition.first.second );
-			AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
-
-			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
-		}
-
-	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class EpsilonType, class StateType >
 object::ObjectBase* EpsilonNFA < SymbolType, EpsilonType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.cpp b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
index ce8d8d3d6e0123cbc1d7c1986a8f5b9d369c8e00..990f48493d06aab238aaf84305cbead65095057c 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.cpp
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
@@ -6,23 +6,14 @@
  */
 
 #include "ExtendedNFA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::ExtendedNFA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::ExtendedNFA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::ExtendedNFA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::ExtendedNFA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::ExtendedNFA < > > ( );
-
 static auto extendedNFAFromDFA = registration::CastRegister < automaton::ExtendedNFA < >, automaton::DFA < > > ( );
 static auto extendedNFAFromNFA = registration::CastRegister < automaton::ExtendedNFA < >, automaton::NFA < > > ( );
 static auto extendedNFAFromMultiInitialStateNFA = registration::CastRegister < automaton::ExtendedNFA < >, automaton::MultiInitialStateNFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h
index e1816b9471aad2319a52f5de2a02fc0d6281b5fe..949d630b5997d295c275185e2e21c17fd983e164 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.h
@@ -30,8 +30,6 @@
 #include <alib/algorithm>
 #include <sstream>
 
-#include <sax/FromXMLParserHelper.h>
-#include <regexp/xml/UnboundedRegExpStructure.h>
 #include <core/components.hpp>
 #include <common/createUnique.hpp>
 #include <object/UniqueObject.h>
@@ -39,15 +37,13 @@
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
-#include "../../label/InitialStateLabel.h"
-#include "../../regexp/unbounded/UnboundedRegExpStructure.h"
-#include "../../regexp/unbounded/UnboundedRegExpConcatenation.h"
-#include "../../regexp/unbounded/UnboundedRegExpSymbol.h"
+#include <label/InitialStateLabel.h>
+#include <regexp/unbounded/UnboundedRegExpStructure.h>
+#include <regexp/unbounded/UnboundedRegExpConcatenation.h>
+#include <regexp/unbounded/UnboundedRegExpSymbol.h>
 
 #include <core/normalize.hpp>
 
@@ -433,52 +429,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "ExtendedNFA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static ExtendedNFA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, ExtendedNFA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const ExtendedNFA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const ExtendedNFA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -678,69 +628,6 @@ ExtendedNFA < SymbolType, StateType >::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template<class SymbolType, class StateType >
-ExtendedNFA < SymbolType, StateType > ExtendedNFA < SymbolType, StateType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, ExtendedNFA::getXmlTagName() );
-
-	ext::set < StateType > states = AutomatonFromXMLParser::parseStates < StateType > ( input );
-	ext::set < SymbolType > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
-	StateType initialState = AutomatonFromXMLParser::parseInitialState < StateType > ( input );
-	ext::set < StateType > finalStates = AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
-
-	ExtendedNFA < SymbolType, StateType > automaton ( std::move ( initialState ) );
-
-	automaton.setStates ( std::move ( states ) );
-	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
-	automaton.setFinalStates ( std::move ( finalStates ) );
-
-	AutomatonFromXMLParser::parseTransitions < ExtendedNFA > ( input, automaton );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, ExtendedNFA::getXmlTagName() );
-	return automaton;
-}
-
-template<class SymbolType, class StateType >
-void ExtendedNFA < SymbolType, StateType >::parseTransition ( ext::deque < sax::Token >::iterator & input, ExtendedNFA & automaton ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
-	regexp::UnboundedRegExpStructure < SymbolType > inputRegexp = AutomatonFromXMLParser::parseTransitionInputRegexp < SymbolType > ( input );
-	StateType to = AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
-
-	automaton.addTransition ( std::move ( from ), std::move ( inputRegexp ), std::move ( to ) );
-}
-
-template<class SymbolType, class StateType >
-void ExtendedNFA < SymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const ExtendedNFA & automaton ) {
-	out.emplace_back ( ExtendedNFA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-
-	AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
-	AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
-	AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
-	AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
-	composeTransitions ( out, automaton );
-
-	out.emplace_back ( ExtendedNFA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
-template<class SymbolType, class StateType >
-void ExtendedNFA < SymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const ExtendedNFA & automaton ) {
-	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
-
-	for ( const auto & transition : automaton.getTransitions ( ) )
-		for ( const auto & targetState : transition.second ) {
-			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
-
-			AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
-			AutomatonToXMLComposer::composeTransitionInputRegexp ( out, transition.first.second );
-			AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
-
-			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
-		}
-
-	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class StateType >
 object::ObjectBase* ExtendedNFA < SymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
index 8426965a0f9caed093db3cc8f6209860d86aa208..a1bd29f7647131382f5db297397a9fc156c95845 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
@@ -6,23 +6,14 @@
  */
 
 #include "MultiInitialStateNFA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::MultiInitialStateNFA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::MultiInitialStateNFA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::MultiInitialStateNFA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::MultiInitialStateNFA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::MultiInitialStateNFA < > > ( );
-
 static auto multiInitialStateNFAFromDFA = registration::CastRegister < automaton::MultiInitialStateNFA < >, automaton::DFA < > > ( );
 static auto multiInitialStateNFAFromNFA = registration::CastRegister < automaton::MultiInitialStateNFA < >, automaton::NFA < > > ( );
 
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
index 92d3b3f36f57dfde6157b4a4a58ef9b4544b2eb7..128cc9a2a9ab8b95ba01f945f6af4dbce56f70f5 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
@@ -29,15 +29,12 @@
 #include <ostream>
 #include <sstream>
 
-#include <sax/FromXMLParserHelper.h>
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -450,52 +447,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "MultiInitialStateNFA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static MultiInitialStateNFA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, MultiInitialStateNFA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const MultiInitialStateNFA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const MultiInitialStateNFA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -668,70 +619,6 @@ MultiInitialStateNFA < SymbolType, StateType >::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template < class SymbolType, class StateType >
-MultiInitialStateNFA < SymbolType, StateType > MultiInitialStateNFA < SymbolType, StateType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, MultiInitialStateNFA < SymbolType, StateType >::getXmlTagName() );
-
-	ext::set < StateType > states = AutomatonFromXMLParser::parseStates < StateType > ( input );
-	ext::set < SymbolType > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
-	ext::set < StateType > initialStates = AutomatonFromXMLParser::parseInitialStates < StateType > ( input );
-	ext::set < StateType > finalStates = AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
-
-	MultiInitialStateNFA < SymbolType, StateType > automaton;
-
-	automaton.setStates ( std::move ( states ) );
-	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
-	automaton.setInitialStates ( std::move ( initialStates ) );
-	automaton.setFinalStates ( std::move ( finalStates ) );
-
-	AutomatonFromXMLParser::parseTransitions < MultiInitialStateNFA > ( input, automaton );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, MultiInitialStateNFA < SymbolType, StateType >::getXmlTagName() );
-	return automaton;
-}
-
-template < class SymbolType, class StateType >
-void MultiInitialStateNFA < SymbolType, StateType >::parseTransition ( ext::deque < sax::Token >::iterator & input, MultiInitialStateNFA & automaton ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
-	SymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol < SymbolType > ( input );
-	StateType to = AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
-
-	automaton.addTransition ( std::move ( from ), std::move ( inputSymbol ), std::move ( to ) );
-}
-
-template < class SymbolType, class StateType >
-void MultiInitialStateNFA < SymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const MultiInitialStateNFA & automaton ) {
-	out.emplace_back ( MultiInitialStateNFA < SymbolType, StateType >::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-
-	AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
-	AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
-	AutomatonToXMLComposer::composeInitialStates ( out, automaton.getInitialStates ( ) );
-	AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
-	composeTransitions ( out, automaton );
-
-	out.emplace_back ( MultiInitialStateNFA < SymbolType, StateType >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
-template < class SymbolType, class StateType >
-void MultiInitialStateNFA < SymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const MultiInitialStateNFA & automaton ) {
-	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
-
-	for ( const auto & transition : automaton.getTransitions ( ) )
-		for ( const auto & targetState : transition.second ) {
-			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
-
-			AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
-			AutomatonToXMLComposer::composeTransitionInputSymbol ( out, transition.first.second );
-			AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
-
-			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
-		}
-
-	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class StateType >
 object::ObjectBase* MultiInitialStateNFA < SymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/FSM/NFA.cpp b/alib2data/src/automaton/FSM/NFA.cpp
index 552f2d4155f0292e7078939e1f36f26ef000ec73..b49a674bcef79169d4886e4eb5ca8c87e4d9619e 100644
--- a/alib2data/src/automaton/FSM/NFA.cpp
+++ b/alib2data/src/automaton/FSM/NFA.cpp
@@ -6,23 +6,14 @@
  */
 
 #include "NFA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::NFA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::NFA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::NFA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::NFA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::NFA < > > ( );
-
 static auto NFAFromDFA = registration::CastRegister < automaton::NFA < >, automaton::DFA < > > ( );
 
 } /* namespace */
diff --git a/alib2data/src/automaton/FSM/NFA.h b/alib2data/src/automaton/FSM/NFA.h
index d27f4f0708e7868e484ba327db8169cb6cba0b33..214bb826ce210c3a86549abfacb5450c8572672b 100644
--- a/alib2data/src/automaton/FSM/NFA.h
+++ b/alib2data/src/automaton/FSM/NFA.h
@@ -28,14 +28,11 @@
 #include <alib/set>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -420,52 +417,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "NFA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static NFA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, NFA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const NFA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const NFA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -631,69 +582,6 @@ NFA < SymbolType, StateType >::operator std::string ( ) const {
 	return ss.str ( );
 }
 
-template<class SymbolType, class StateType >
-NFA < SymbolType, StateType > NFA < SymbolType, StateType >::parse ( ext::deque < sax::Token >::iterator & input ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, NFA < SymbolType, StateType >::getXmlTagName() );
-
-	ext::set < StateType > states = AutomatonFromXMLParser::parseStates < StateType > ( input );
-	ext::set < SymbolType > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
-	StateType initialState = AutomatonFromXMLParser::parseInitialState < StateType > ( input );
-	ext::set < StateType > finalStates = AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
-
-	NFA < SymbolType, StateType > automaton ( std::move ( initialState ) );
-
-	automaton.setStates ( std::move ( states ) );
-	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
-	automaton.setFinalStates ( std::move ( finalStates ) );
-
-	AutomatonFromXMLParser::parseTransitions < NFA > ( input, automaton );
-
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, NFA < SymbolType, StateType >::getXmlTagName() );
-	return automaton;
-}
-
-template<class SymbolType, class StateType >
-void NFA < SymbolType, StateType >::parseTransition ( ext::deque < sax::Token >::iterator & input, NFA & automaton ) {
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
-	SymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol < SymbolType > ( input );
-	StateType to = AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
-	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
-
-	automaton.addTransition ( std::move ( from ), std::move ( inputSymbol ), std::move ( to ) );
-}
-
-template<class SymbolType, class StateType >
-void NFA < SymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const NFA & automaton ) {
-	out.emplace_back ( NFA < SymbolType, StateType >::getXmlTagName(), sax::Token::TokenType::START_ELEMENT );
-
-	AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
-	AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
-	AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
-	AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
-	composeTransitions ( out, automaton );
-
-	out.emplace_back ( NFA < SymbolType, StateType >::getXmlTagName(), sax::Token::TokenType::END_ELEMENT );
-}
-
-template<class SymbolType, class StateType >
-void NFA < SymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const NFA & automaton ) {
-	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
-
-	for ( const auto & transition : automaton.getTransitions ( ) )
-		for ( const auto & targetState : transition.second ) {
-			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
-
-			AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
-			AutomatonToXMLComposer::composeTransitionInputSymbol ( out, transition.first.second );
-			AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
-
-			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
-		}
-
-	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
-}
-
 template < class SymbolType, class StateType >
 object::ObjectBase* NFA < SymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/DPDA.cpp b/alib2data/src/automaton/PDA/DPDA.cpp
index 98b4ffe0277a187df2008dd522f085aa85f21d21..4c889af6191c57e70c7d903d711594a0c28b9e19 100644
--- a/alib2data/src/automaton/PDA/DPDA.cpp
+++ b/alib2data/src/automaton/PDA/DPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "DPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::DPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::DPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::DPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::DPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::DPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h
index 60177fccedec3039673287cbc7e6d77fda44b828..56e1c86fe7d44212efc9e98fb7f69135d771de58 100644
--- a/alib2data/src/automaton/PDA/DPDA.h
+++ b/alib2data/src/automaton/PDA/DPDA.h
@@ -32,14 +32,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -550,52 +547,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "DPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static DPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, DPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const DPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const DPDA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -804,75 +755,6 @@ DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::opera
 	return ss.str();
 }
 
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, DPDA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<InputSymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
-	ext::set<PushdownStoreSymbolType> pushdownStoreSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input);
-	PushdownStoreSymbolType initialPushdownStoreSymbol = AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	DPDA automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setPushdownStoreAlphabet(std::move(pushdownStoreSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<DPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, DPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, DPDA& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-	ext::variant<EpsilonType, InputSymbolType> inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
-	ext::vector<PushdownStoreSymbolType> pop = AutomatonFromXMLParser::parseTransitionPop<PushdownStoreSymbolType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-	ext::vector<PushdownStoreSymbolType> push = AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push));
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const DPDA & automaton ) {
-	out.emplace_back(DPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions ( out, automaton );
-
-	out.emplace_back(DPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const DPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getTransitions()) {
-		out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
-		AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
-		AutomatonToXMLComposer::composeTransitionPop(out, std::get<2>(transition.first));
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second.first);
-		AutomatonToXMLComposer::composeTransitionPush(out, transition.second.second);
-
-		out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
-	}
-
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
index 4d59f970d7c32efff1cfe29f09ebed79877e847a..ad402cec476e87469119e30508bd51acaf0d33b5 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "InputDrivenDPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::InputDrivenDPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::InputDrivenDPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::InputDrivenDPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::InputDrivenDPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::InputDrivenDPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
index f87e4c7015ba9dae89c90df0ccd46aaf584779dc..8dda09be0a30fb71b177d12fa1f607d4953af310 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
@@ -32,14 +32,11 @@
 #include <alib/algorithm>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -532,52 +529,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "InputDrivenDPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static InputDrivenDPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, InputDrivenDPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const InputDrivenDPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const InputDrivenDPDA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -774,73 +725,6 @@ InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::operato
 	return ss.str();
 }
 
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, InputDrivenDPDA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<InputSymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
-	ext::set<PushdownStoreSymbolType> pushdownStoreSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input);
-	PushdownStoreSymbolType initialPushdownStoreSymbol = AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setPushdownStoreAlphabet(std::move(pushdownStoreSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	automaton.setPushdownStoreOperations(AutomatonFromXMLParser::parseInputToPushdownStoreOperation<InputSymbolType, PushdownStoreSymbolType>(input));
-	AutomatonFromXMLParser::parseTransitions<InputDrivenDPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, InputDrivenDPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, InputDrivenDPDA& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-	InputSymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(to));
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const InputDrivenDPDA & automaton ) {
-	out.emplace_back(InputDrivenDPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	AutomatonToXMLComposer::composeInputToPushdownStoreOperation(out, automaton.getPushdownStoreOperations());
-	composeTransitions ( out, automaton );
-
-	out.emplace_back(InputDrivenDPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const InputDrivenDPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getTransitions()) {
-		out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-		AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
-
-		out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
-	}
-
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
index 7a20b116f1c892f44260b564e7528fbc3ab6ce5e..de4e7ee0493d0eff73a710e2b2798829c71de604 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "InputDrivenNPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::InputDrivenNPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::InputDrivenNPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::InputDrivenNPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::InputDrivenNPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::InputDrivenNPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
index 62931c5b42ce36ce182381a6180e16c6f11fa93b..2c2935e218571e397b3e250a289c50355f584921 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
@@ -32,14 +32,11 @@
 #include <alib/algorithm>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -557,52 +554,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "InputDrivenNPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static InputDrivenNPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, InputDrivenNPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const InputDrivenNPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const InputDrivenNPDA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -813,75 +764,6 @@ InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::operato
 	return ss.str();
 }
 
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, InputDrivenNPDA::getXmlTagName());
-
-	ext::set<StateType > states = AutomatonFromXMLParser::parseStates<StateType >(input);
-	ext::set<InputSymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
-	ext::set<PushdownStoreSymbolType> pushdownStoreSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType >(input);
-	PushdownStoreSymbolType initialPushdownStoreSymbol = AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType > finalStates = AutomatonFromXMLParser::parseFinalStates<StateType >(input);
-
-	InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setPushdownStoreAlphabet(std::move(pushdownStoreSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	automaton.setPushdownStoreOperations(AutomatonFromXMLParser::parseInputToPushdownStoreOperation<InputSymbolType, PushdownStoreSymbolType>(input));
-	AutomatonFromXMLParser::parseTransitions<InputDrivenNPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, InputDrivenNPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, InputDrivenNPDA& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType >(input);
-	InputSymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType >(input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(to));
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const InputDrivenNPDA & automaton ) {
-	out.emplace_back(InputDrivenNPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	AutomatonToXMLComposer::composeInputToPushdownStoreOperation(out, automaton.getPushdownStoreOperations());
-	composeTransitions ( out, automaton );
-
-	out.emplace_back(InputDrivenNPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const InputDrivenNPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-			AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
-			AutomatonToXMLComposer::composeTransitionTo(out, target);
-
-			out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/NPDA.cpp b/alib2data/src/automaton/PDA/NPDA.cpp
index 5fd9304bf356c4d2feca167ca1d4f3c26c3d8677..9ecf921bc3e544c98d3161e90fdeae80bd83f18a 100644
--- a/alib2data/src/automaton/PDA/NPDA.cpp
+++ b/alib2data/src/automaton/PDA/NPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "NPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::NPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::NPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::NPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::NPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::NPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h
index bcb52dbbb6829347186da63d3eef93b267467d2c..46fa9ac047ee7c399fd68b1369a486c696b5429d 100644
--- a/alib2data/src/automaton/PDA/NPDA.h
+++ b/alib2data/src/automaton/PDA/NPDA.h
@@ -32,14 +32,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -566,52 +563,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "NPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static NPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, NPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const NPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & ou, const NPDA & automatont );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -770,77 +721,6 @@ NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::opera
 	return ss.str();
 }
 
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, NPDA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set < InputSymbolType > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet < InputSymbolType > ( input );
-	ext::set<PushdownStoreSymbolType> pushdownStoreSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input);
-	PushdownStoreSymbolType initialPushdownStoreSymbol = AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	NPDA automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setPushdownStoreAlphabet(std::move(pushdownStoreSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<NPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, NPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, NPDA& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-	ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol < EpsilonType, InputSymbolType > ( input );
-	ext::vector<PushdownStoreSymbolType> pop = AutomatonFromXMLParser::parseTransitionPop<PushdownStoreSymbolType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-	ext::vector<PushdownStoreSymbolType> push = AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push));
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const NPDA & automaton ) {
-	out.emplace_back(NPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions ( out, automaton );
-
-	out.emplace_back(NPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const NPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
-			AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
-			AutomatonToXMLComposer::composeTransitionPop(out, std::get<2>(transition.first));
-			AutomatonToXMLComposer::composeTransitionTo(out, target.first);
-			AutomatonToXMLComposer::composeTransitionPush(out, target.second);
-
-			out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/NPDTA.cpp b/alib2data/src/automaton/PDA/NPDTA.cpp
index 9b70c87c10ee3ce12fd031156687744677ee35c1..48316e7b5efba2085afb41edd44f47f1730e662b 100644
--- a/alib2data/src/automaton/PDA/NPDTA.cpp
+++ b/alib2data/src/automaton/PDA/NPDTA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "NPDTA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::NPDTA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::NPDTA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::NPDTA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::NPDTA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::NPDTA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h
index e2310f67bf0cc52d165b5cab7d3a47c239f98a2a..aeea0944f1018ad4256c77e8b1a070977b9d56c8 100644
--- a/alib2data/src/automaton/PDA/NPDTA.h
+++ b/alib2data/src/automaton/PDA/NPDTA.h
@@ -32,14 +32,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -643,52 +640,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "NPDTA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static NPDTA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, NPDTA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const NPDTA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const NPDTA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -882,82 +833,6 @@ NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType,
 	return ss.str();
 }
 
-template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, NPDTA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set < InputSymbolType > inputSymbols = AutomatonFromXMLParser::parseInputAlphabet < InputSymbolType > ( input );
-	ext::set<PushdownStoreSymbolType> stackSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	ext::set < OutputSymbolType > outputSymbols = AutomatonFromXMLParser::parseOutputAlphabet < OutputSymbolType > ( input );
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input);
-	PushdownStoreSymbolType initialPushdownStoreSymbol = AutomatonFromXMLParser::parseInitialPushdownStoreSymbol < PushdownStoreSymbolType > ( input );
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
-	automaton.setOutputAlphabet(std::move(outputSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<NPDTA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, NPDTA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, NPDTA& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-	ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
-	ext::vector<PushdownStoreSymbolType> pop = AutomatonFromXMLParser::parseTransitionPop<PushdownStoreSymbolType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-	ext::vector<PushdownStoreSymbolType> push = AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
-	ext::vector < OutputSymbolType > output = AutomatonFromXMLParser::parseTransitionOutputSymbolMultiple < OutputSymbolType > (input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push), std::move(output));
-}
-
-template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::compose(ext::deque<sax::Token>& out, const NPDTA & automaton ) {
-	out.emplace_back(NPDTA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeOutputAlphabet(out, automaton.getOutputAlphabet());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions(out, automaton);
-
-	out.emplace_back(NPDTA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::composeTransitions(ext::deque<sax::Token>& out, const NPDTA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
-			AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
-			AutomatonToXMLComposer::composeTransitionPop(out, std::get<2>(transition.first));
-			AutomatonToXMLComposer::composeTransitionTo(out, std::get<0>(target));
-			AutomatonToXMLComposer::composeTransitionPush(out, std::get<1>(target));
-			AutomatonToXMLComposer::composeTransitionOutputSymbolMultiple(out, std::get<2>(target));
-
-			out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
index 6dcf5efc574709f359319a57687b3aeaac3d0fc4..39cb3c0c86965e903fae8eb8311e7636bd5d2174 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "RealTimeHeightDeterministicDPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::RealTimeHeightDeterministicDPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::RealTimeHeightDeterministicDPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::RealTimeHeightDeterministicDPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::RealTimeHeightDeterministicDPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::RealTimeHeightDeterministicDPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
index 9c9e0cfe719cc30fa5861d8b378d18adbbe0bff8..281279c062db908d3b5a0d4d32ce5bd014ec6485 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
@@ -32,14 +32,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -769,52 +766,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "RealTimeHeightDeterministicDPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static RealTimeHeightDeterministicDPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, RealTimeHeightDeterministicDPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const RealTimeHeightDeterministicDPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & ou, const RealTimeHeightDeterministicDPDA & automatont );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -1174,110 +1125,6 @@ RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSym
 	return ss.str();
 }
 
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, RealTimeHeightDeterministicDPDA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<InputSymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
-	ext::set<PushdownStoreSymbolType> stackSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input);
-	PushdownStoreSymbolType bottomOfTheStackSymbol = AutomatonFromXMLParser::parseBottomOfTheStackSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(bottomOfTheStackSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<RealTimeHeightDeterministicDPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, RealTimeHeightDeterministicDPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, RealTimeHeightDeterministicDPDA& automaton) {
-	if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition")) {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType,InputSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-		PushdownStoreSymbolType push = AutomatonFromXMLParser::parseTransitionSinglePush<PushdownStoreSymbolType>(input);
-
-		automaton.addCallTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(push));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "callTransition");
-	} else if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition")) {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType,InputSymbolType>(input);
-		PushdownStoreSymbolType pop = AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-
-		automaton.addReturnTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "returnTransition");
-	} else {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "localTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType,InputSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-
-		automaton.addLocalTransition(std::move(from), std::move(inputSymbol), std::move(to));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "localTransition");
-	}
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const RealTimeHeightDeterministicDPDA & automaton ) {
-	out.emplace_back(RealTimeHeightDeterministicDPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions ( out, automaton );
-
-	out.emplace_back(RealTimeHeightDeterministicDPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const RealTimeHeightDeterministicDPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getCallTransitions()) {
-		out.emplace_back("callTransition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-		AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, transition.first.second);
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second.first);
-		AutomatonToXMLComposer::composeTransitionSinglePush(out, transition.second.second);
-
-		out.emplace_back("callTransition", sax::Token::TokenType::END_ELEMENT);
-	}
-	for(const auto& transition : automaton.getReturnTransitions()) {
-		out.emplace_back("returnTransition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
-		AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
-		AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
-
-		out.emplace_back("returnTransition", sax::Token::TokenType::END_ELEMENT);
-	}
-	for(const auto& transition : automaton.getLocalTransitions()) {
-		out.emplace_back("localTransition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-		AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, transition.first.second);
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
-
-		out.emplace_back("localTransition", sax::Token::TokenType::END_ELEMENT);
-	}
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
index 31a7ce1d1e58fb83381046f47692ac252a501785..75ce4762df9540fa1f08b73ab2728eeffd4e0a48 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "RealTimeHeightDeterministicNPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::RealTimeHeightDeterministicNPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::RealTimeHeightDeterministicNPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::RealTimeHeightDeterministicNPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::RealTimeHeightDeterministicNPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::RealTimeHeightDeterministicNPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
index 59e56a0c2f9039bd154f92e501f4d11691fc8b81..4e7acbc0548fb0d0a1360c9270a851b47c943688 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
@@ -32,14 +32,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -889,52 +886,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "RealTimeHeightDeterministicNPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static RealTimeHeightDeterministicNPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, RealTimeHeightDeterministicNPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const RealTimeHeightDeterministicNPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const RealTimeHeightDeterministicNPDA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -1269,117 +1220,6 @@ RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSym
 	return ss.str();
 }
 
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, RealTimeHeightDeterministicNPDA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<InputSymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
-	ext::set<PushdownStoreSymbolType> stackSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	ext::set<StateType> initialStates = AutomatonFromXMLParser::parseInitialStates<StateType>(input);
-	PushdownStoreSymbolType bottomOfTheStackSymbol = AutomatonFromXMLParser::parseBottomOfTheStackSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	RealTimeHeightDeterministicNPDA automaton(std::move(bottomOfTheStackSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
-	automaton.setInitialStates(std::move(initialStates));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<RealTimeHeightDeterministicNPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, RealTimeHeightDeterministicNPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, RealTimeHeightDeterministicNPDA& automaton) {
-	if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition")) {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-		PushdownStoreSymbolType push = AutomatonFromXMLParser::parseTransitionSinglePush<PushdownStoreSymbolType>(input);
-
-		automaton.addCallTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(push));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "callTransition");
-	} else if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition")) {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
-		PushdownStoreSymbolType pop = AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-
-		automaton.addReturnTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "returnTransition");
-	} else {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "localTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-
-		automaton.addLocalTransition(std::move(from), std::move(inputSymbol), std::move(to));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "localTransition");
-	}
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const RealTimeHeightDeterministicNPDA & automaton ) {
-	out.emplace_back(RealTimeHeightDeterministicNPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialStates(out, automaton.getInitialStates());
-	AutomatonToXMLComposer::composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions(out, automaton );
-
-	out.emplace_back(RealTimeHeightDeterministicNPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const RealTimeHeightDeterministicNPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getCallTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("callTransition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-			AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, transition.first.second);
-			AutomatonToXMLComposer::composeTransitionTo(out, target.first);
-			AutomatonToXMLComposer::composeTransitionSinglePush(out, target.second);
-
-			out.emplace_back("callTransition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-	for(const auto& transition : automaton.getReturnTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("returnTransition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
-			AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
-			AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
-			AutomatonToXMLComposer::composeTransitionTo(out, target);
-
-			out.emplace_back("returnTransition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-	for(const auto& transition : automaton.getLocalTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("localTransition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-			AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, transition.first.second);
-			AutomatonToXMLComposer::composeTransitionTo(out, target);
-
-			out.emplace_back("localTransition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
index a41be410576192a0766e14f52c0f89454ff87f49..6c17b30ce770c61c0b820183c5caddec60c683ef 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "SinglePopDPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::SinglePopDPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::SinglePopDPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::SinglePopDPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::SinglePopDPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::SinglePopDPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h
index 5755a26f7d7cdd4a7b510b319da6c9fde518adbe..459170336ee246a203f45215b207e80724483a79 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h
@@ -33,14 +33,11 @@
 #include <ostream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -532,52 +529,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "SinglePopDPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static SinglePopDPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, SinglePopDPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const SinglePopDPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const SinglePopDPDA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -731,75 +682,6 @@ SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType
 	return ss.str();
 }
 
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SinglePopDPDA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<InputSymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
-	ext::set<PushdownStoreSymbolType> stackSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input);
-	PushdownStoreSymbolType initialPushdownStoreSymbol = AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<SinglePopDPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SinglePopDPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, SinglePopDPDA& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-	ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
-	PushdownStoreSymbolType pop = AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-	ext::vector<PushdownStoreSymbolType> push = AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push));
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const SinglePopDPDA & automaton ) {
-	out.emplace_back(SinglePopDPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions ( out, automaton );
-
-	out.emplace_back(SinglePopDPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const SinglePopDPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getTransitions()) {
-		out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
-		AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
-		AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second.first);
-		AutomatonToXMLComposer::composeTransitionPush(out, transition.second.second);
-
-		out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
-	}
-
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
index 29e565dc4adc4aec230f94b169a3732f757b29c3..ab4db62db6e684fdfe0eb198ea59ea92fc807956 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "SinglePopNPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::SinglePopNPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::SinglePopNPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::SinglePopNPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::SinglePopNPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::SinglePopNPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h
index 73392c0dc514c6685ab811ae50118b469f2e7ca0..3ec9017c3b41eec5034cbe59340899fd98212e05 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h
@@ -32,14 +32,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -567,52 +564,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "SinglePopNPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static SinglePopNPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, SinglePopNPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const SinglePopNPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const SinglePopNPDA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -774,77 +725,6 @@ SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType
 	return ss.str();
 }
 
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, SinglePopNPDA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<InputSymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
-	ext::set<PushdownStoreSymbolType> stackSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input);
-	PushdownStoreSymbolType initialPushdownStoreSymbol = AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<SinglePopNPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, SinglePopNPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, SinglePopNPDA& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-	ext::variant < EpsilonType, InputSymbolType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
-	PushdownStoreSymbolType pop = AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-	ext::vector<PushdownStoreSymbolType> push = AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push));
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const SinglePopNPDA & automaton ) {
-	out.emplace_back(SinglePopNPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions ( out, automaton );
-
-	out.emplace_back(SinglePopNPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
-void SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const SinglePopNPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
-			AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
-			AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
-			AutomatonToXMLComposer::composeTransitionTo(out, target.first);
-			AutomatonToXMLComposer::composeTransitionPush(out, target.second);
-
-			out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
index b3a90d980530d48dfca242bc7d0bfe76afd49736..0c59c0395838ed76d7dfee7872fbd94a069fe3b1 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "VisiblyPushdownDPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::VisiblyPushdownDPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::VisiblyPushdownDPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::VisiblyPushdownDPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::VisiblyPushdownDPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::VisiblyPushdownDPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
index e2a677b6209c8e17884e3011e07840a045df8885..e642b41f9f761bd236800e283814d3058ef3c3df 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
@@ -31,14 +31,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -709,52 +706,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "VisiblyPushdownDPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static VisiblyPushdownDPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, VisiblyPushdownDPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const VisiblyPushdownDPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const VisiblyPushdownDPDA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -999,116 +950,6 @@ VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::ope
 	return ss.str();
 }
 
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, VisiblyPushdownDPDA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<InputSymbolType> callAlphabet = AutomatonFromXMLParser::parseCallInputAlphabet<InputSymbolType>(input);
-	ext::set<InputSymbolType> returnAlphabet = AutomatonFromXMLParser::parseReturnInputAlphabet<InputSymbolType>(input);
-	ext::set<InputSymbolType> localAlphabet = AutomatonFromXMLParser::parseLocalInputAlphabet<InputSymbolType>(input);
-	ext::set<PushdownStoreSymbolType> stackSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input);
-	PushdownStoreSymbolType bottomOfTheStackSymbol = AutomatonFromXMLParser::parseBottomOfTheStackSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(bottomOfTheStackSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setCallInputAlphabet(std::move(callAlphabet));
-	automaton.setReturnInputAlphabet(std::move(returnAlphabet));
-	automaton.setLocalInputAlphabet(std::move(localAlphabet));
-	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<VisiblyPushdownDPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, VisiblyPushdownDPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, VisiblyPushdownDPDA& automaton) {
-	if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition")) {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		InputSymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-		PushdownStoreSymbolType push = AutomatonFromXMLParser::parseTransitionSinglePush<PushdownStoreSymbolType>(input);
-
-		automaton.addCallTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(push));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "callTransition");
-	} else if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition")) {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		InputSymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
-		PushdownStoreSymbolType pop = AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-
-		automaton.addReturnTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "returnTransition");
-	} else {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "localTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		InputSymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-
-		automaton.addLocalTransition(std::move(from), std::move(inputSymbol), std::move(to));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "localTransition");
-	}
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const VisiblyPushdownDPDA & automaton ) {
-	out.emplace_back(VisiblyPushdownDPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeCallInputAlphabet(out, automaton.getCallInputAlphabet());
-	AutomatonToXMLComposer::composeReturnInputAlphabet(out, automaton.getReturnInputAlphabet());
-	AutomatonToXMLComposer::composeLocalInputAlphabet(out, automaton.getLocalInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions ( out, automaton );
-
-	out.emplace_back(VisiblyPushdownDPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::composeTransitions ( ext::deque < sax::Token > & out, const VisiblyPushdownDPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getCallTransitions()) {
-		out.emplace_back("callTransition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-		AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second.first);
-		AutomatonToXMLComposer::composeTransitionSinglePush(out, transition.second.second);
-
-		out.emplace_back("callTransition", sax::Token::TokenType::END_ELEMENT);
-	}
-	for(const auto& transition : automaton.getReturnTransitions()) {
-		out.emplace_back("returnTransition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
-		AutomatonToXMLComposer::composeTransitionInputSymbol(out, std::get<1>(transition.first));
-		AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
-
-		out.emplace_back("returnTransition", sax::Token::TokenType::END_ELEMENT);
-	}
-	for(const auto& transition : automaton.getLocalTransitions()) {
-		out.emplace_back("localTransition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-		AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
-
-		out.emplace_back("localTransition", sax::Token::TokenType::END_ELEMENT);
-	}
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
index 6338e0ebb2c3c65443b0e0260abaa7e3c00bba59..0c1353aa1601f985dfef0da3f3dfa20f7686b8e1 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "VisiblyPushdownNPDA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::VisiblyPushdownNPDA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::VisiblyPushdownNPDA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::VisiblyPushdownNPDA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::VisiblyPushdownNPDA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::VisiblyPushdownNPDA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
index e466e12e87742afaf2ad34cbc183fafbede30089..877eae325ab61a5fa9e92e577f4343babc3ffe8f 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
@@ -31,14 +31,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -761,52 +758,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "VisiblyPushdownNPDA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static VisiblyPushdownNPDA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, VisiblyPushdownNPDA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const VisiblyPushdownNPDA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const VisiblyPushdownNPDA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -1035,123 +986,6 @@ VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::ope
 	return ss.str();
 }
 
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, VisiblyPushdownNPDA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<InputSymbolType> callInputAlphabet = AutomatonFromXMLParser::parseCallInputAlphabet<InputSymbolType>(input);
-	ext::set<InputSymbolType> returnInputAlphabet = AutomatonFromXMLParser::parseReturnInputAlphabet<InputSymbolType>(input);
-	ext::set<InputSymbolType> localInputAlphabet = AutomatonFromXMLParser::parseLocalInputAlphabet<InputSymbolType>(input);
-	ext::set<PushdownStoreSymbolType> stackSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
-	ext::set<StateType> initialStates = AutomatonFromXMLParser::parseInitialStates<StateType>(input);
-	PushdownStoreSymbolType bottomOfTheStackSymbol = AutomatonFromXMLParser::parseBottomOfTheStackSymbol<PushdownStoreSymbolType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > automaton(std::move(bottomOfTheStackSymbol));
-	automaton.setStates(std::move(states));
-	automaton.setCallInputAlphabet(std::move(callInputAlphabet));
-	automaton.setReturnInputAlphabet(std::move(returnInputAlphabet));
-	automaton.setLocalInputAlphabet(std::move(localInputAlphabet));
-	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
-	automaton.setInitialStates(std::move(initialStates));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<VisiblyPushdownNPDA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, VisiblyPushdownNPDA::getXmlTagName());
-	return automaton;
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, VisiblyPushdownNPDA& automaton) {
-	if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition")) {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		InputSymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol < InputSymbolType > ( input );
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-		PushdownStoreSymbolType push = AutomatonFromXMLParser::parseTransitionSinglePush<PushdownStoreSymbolType>(input);
-
-		automaton.addCallTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(push));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "callTransition");
-	} else if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition")) {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		InputSymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol < InputSymbolType > ( input );
-		PushdownStoreSymbolType pop = AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-
-		automaton.addReturnTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "returnTransition");
-	} else {
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "localTransition");
-		StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-		InputSymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol < InputSymbolType > ( input );
-		StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-
-		automaton.addLocalTransition(std::move(from), std::move(inputSymbol), std::move(to));
-		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "localTransition");
-	}
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::compose ( ext::deque < sax::Token > & out, const VisiblyPushdownNPDA & automaton ) {
-	out.emplace_back(VisiblyPushdownNPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeCallInputAlphabet(out, automaton.getCallInputAlphabet());
-	AutomatonToXMLComposer::composeReturnInputAlphabet(out, automaton.getReturnInputAlphabet());
-	AutomatonToXMLComposer::composeLocalInputAlphabet(out, automaton.getLocalInputAlphabet());
-	AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
-	AutomatonToXMLComposer::composeInitialStates(out, automaton.getInitialStates());
-	AutomatonToXMLComposer::composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions ( out, automaton );
-
-	out.emplace_back(VisiblyPushdownNPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
-void VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::composeTransitions(ext::deque<sax::Token>& out, const VisiblyPushdownNPDA & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getCallTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("callTransition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-			AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
-			AutomatonToXMLComposer::composeTransitionTo(out, target.first);
-			AutomatonToXMLComposer::composeTransitionSinglePush(out, target.second);
-
-			out.emplace_back("callTransition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-	for(const auto& transition : automaton.getReturnTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("returnTransition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
-			AutomatonToXMLComposer::composeTransitionInputSymbol(out, std::get<1>(transition.first));
-			AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
-			AutomatonToXMLComposer::composeTransitionTo(out, target);
-
-			out.emplace_back("returnTransition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-	for(const auto& transition : automaton.getLocalTransitions()) {
-		for(const auto& target: transition.second) {
-			out.emplace_back("localTransition", sax::Token::TokenType::START_ELEMENT);
-
-			AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-			AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
-			AutomatonToXMLComposer::composeTransitionTo(out, target);
-
-			out.emplace_back("localTransition", sax::Token::TokenType::END_ELEMENT);
-		}
-	}
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
 object::ObjectBase* VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/TA/DFTA.cpp b/alib2data/src/automaton/TA/DFTA.cpp
index 555cad4ccb9249fe560f278e328911d1ad3c48f7..f7713484b440004514c69db10d3a4f2e80585cc0 100644
--- a/alib2data/src/automaton/TA/DFTA.cpp
+++ b/alib2data/src/automaton/TA/DFTA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "DFTA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::DFTA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::DFTA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::DFTA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::DFTA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::DFTA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h
index a337340d8c55e7a4851c75b875734da66042e6d5..197ba418ad9effdf27d3ce2f465c68418c82bcdb 100644
--- a/alib2data/src/automaton/TA/DFTA.h
+++ b/alib2data/src/automaton/TA/DFTA.h
@@ -31,16 +31,12 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
-#include <alphabet/xml/RankedSymbol.h>
 
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -353,52 +349,6 @@ public:
 	 */
 	virtual operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "DFTA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static DFTA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, DFTA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const DFTA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const DFTA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -495,64 +445,6 @@ DFTA < SymbolType, RankType, StateType >::operator std::string () const {
 	return ss.str();
 }
 
-template<class SymbolType, class RankType, class StateType >
-DFTA < SymbolType, RankType, StateType > DFTA < SymbolType, RankType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, DFTA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<common::ranked_symbol < SymbolType, RankType >> inputSymbols = AutomatonFromXMLParser::parseRankedInputAlphabet<common::ranked_symbol < SymbolType, RankType >>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	DFTA < SymbolType, RankType, StateType > automaton;
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<DFTA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, DFTA::getXmlTagName());
-	return automaton;
-}
-
-template<class SymbolType, class RankType, class StateType >
-void DFTA < SymbolType, RankType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, DFTA& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	common::ranked_symbol < SymbolType, RankType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol<common::ranked_symbol < SymbolType, RankType >>(input);
-	ext::vector<StateType> from = AutomatonFromXMLParser::parseTransitionFromMultiple<StateType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(inputSymbol), std::move(from), std::move(to));
-}
-
-template<class SymbolType, class RankType, class StateType >
-void DFTA < SymbolType, RankType, StateType >::compose(ext::deque<sax::Token>& out, const DFTA & automaton ) {
-	out.emplace_back(DFTA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeRankedInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions(out, automaton);
-
-	out.emplace_back(DFTA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template<class SymbolType, class RankType, class StateType >
-void DFTA < SymbolType, RankType, StateType >::composeTransitions(ext::deque<sax::Token>& out, const DFTA & automaton ) {
-	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::START_ELEMENT));
-	for(const auto& transition : automaton.getTransitions()) {
-		out.emplace_back(sax::Token("transition", sax::Token::TokenType::START_ELEMENT));
-
-		AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.first);
-		AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.second);
-		AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
-
-		out.emplace_back(sax::Token("transition", sax::Token::TokenType::END_ELEMENT));
-	}
-
-	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::END_ELEMENT));
-}
-
 template < class SymbolType, class RankType, class StateType >
 object::ObjectBase* DFTA < SymbolType, RankType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/TA/NFTA.cpp b/alib2data/src/automaton/TA/NFTA.cpp
index e3d385fc4b494077f3e8893e0f3f4e25067ce9e5..da47c080f654908e0d53b810d276cb95183cbbfd 100644
--- a/alib2data/src/automaton/TA/NFTA.cpp
+++ b/alib2data/src/automaton/TA/NFTA.cpp
@@ -6,21 +6,11 @@
  */
 
 #include "NFTA.h"
-#include <automaton/Automaton.h>
-#include <object/Object.h>
 
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::NFTA < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::NFTA < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::NFTA < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::NFTA < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::NFTA < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h
index 859e2c5cfda65a425bfb87f1a9dd23f19b4a968c..8f82a1102f931c705956eaed1ef2263af1d07267 100644
--- a/alib2data/src/automaton/TA/NFTA.h
+++ b/alib2data/src/automaton/TA/NFTA.h
@@ -31,14 +31,11 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../AutomatonException.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -378,52 +375,6 @@ public:
 	 */
 	virtual operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "NFTA";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static NFTA parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, NFTA & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const NFTA & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const NFTA & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -552,66 +503,6 @@ NFTA < SymbolType, RankType, StateType >::operator std::string () const {
 	return ss.str();
 }
 
-template < class SymbolType, class RankType, class StateType >
-NFTA < SymbolType, RankType, StateType > NFTA < SymbolType, RankType, StateType >::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, NFTA::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<common::ranked_symbol < SymbolType, RankType >> inputSymbols = AutomatonFromXMLParser::parseRankedInputAlphabet<common::ranked_symbol < SymbolType, RankType >>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	NFTA < SymbolType, RankType, StateType > automaton;
-	automaton.setStates(std::move(states));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<NFTA>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, NFTA::getXmlTagName());
-	return automaton;
-}
-
-template < class SymbolType, class RankType, class StateType >
-void NFTA < SymbolType, RankType, StateType >::parseTransition(ext::deque<sax::Token>::iterator& input, NFTA& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	common::ranked_symbol < SymbolType, RankType > inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol<common::ranked_symbol < SymbolType, RankType >>(input);
-	ext::vector<StateType> from = AutomatonFromXMLParser::parseTransitionFromMultiple<StateType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(inputSymbol), std::move(from), std::move(to));
-}
-
-template < class SymbolType, class RankType, class StateType >
-void NFTA < SymbolType, RankType, StateType >::compose(ext::deque<sax::Token>& out, const NFTA & automaton ) {
-	out.emplace_back(NFTA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeRankedInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions(out, automaton);
-
-	out.emplace_back(NFTA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template < class SymbolType, class RankType, class StateType >
-void NFTA < SymbolType, RankType, StateType >::composeTransitions(ext::deque<sax::Token>& out, const NFTA & automaton ) {
-	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::START_ELEMENT));
-	for(const auto& transition : automaton.getTransitions()) {
-		for(const auto& targetState: transition.second) {
-			out.emplace_back(sax::Token("transition", sax::Token::TokenType::START_ELEMENT));
-
-			AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.first);
-			AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.second);
-			AutomatonToXMLComposer::composeTransitionTo(out, targetState);
-
-			out.emplace_back(sax::Token("transition", sax::Token::TokenType::END_ELEMENT));
-		}
-	}
-
-	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::END_ELEMENT));
-}
-
 template < class SymbolType, class RankType, class StateType >
 object::ObjectBase* NFTA < SymbolType, RankType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.cpp b/alib2data/src/automaton/TM/OneTapeDTM.cpp
index 7711dc4bcba776018913d046d4f6e39d9d6d1061..5d10fd850de7d416ac96fbfc095bc7b325322079 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.cpp
+++ b/alib2data/src/automaton/TM/OneTapeDTM.cpp
@@ -7,21 +7,10 @@
 
 #include "OneTapeDTM.h"
 
-#include <automaton/Automaton.h>
-#include <object/Object.h>
-
 #include <registration/ValuePrinterRegistration.hpp>
-#include <registration/XmlRegistration.hpp>
-#include <registration/CastRegistration.hpp>
 
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::OneTapeDTM < > > ( );
 
-static auto xmlWrite = registration::XmlWriterRegister < automaton::OneTapeDTM < > > ( );
-static auto xmlRead = registration::XmlReaderRegister < automaton::OneTapeDTM < > > ( );
-
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::OneTapeDTM < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::OneTapeDTM < > > ( );
-
 } /* namespace */
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h
index b1b1a2728d07fcd8fe6b7fb328f846894072e5c2..3e60b20eba8b9bcb2858784e68e434e5ef638140 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/TM/OneTapeDTM.h
@@ -31,15 +31,12 @@
 #include <sstream>
 
 #include <core/components.hpp>
-#include <sax/FromXMLParserHelper.h>
 #include <object/UniqueObject.h>
 
 #include "../AutomatonException.h"
 #include "../AutomatonBase.h"
 #include "../AutomatonFeatures.h"
 #include "../common/Shift.h"
-#include "../common/AutomatonFromXMLParser.h"
-#include "../common/AutomatonToXMLComposer.h"
 #include "../common/AutomatonNormalize.h"
 #include <alphabet/common/SymbolNormalize.h>
 
@@ -456,52 +453,6 @@ public:
 	 */
 	virtual explicit operator std::string ( ) const override;
 
-	/**
-	 * \brief The XML tag name of class.
-	 *
-	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
-	 *
-	 * \returns string representing the XML tag name of the class
-	 */
-	static const std::string & getXmlTagName() {
-		static std::string xmlTagName = "OneTapeDTM";
-
-		return xmlTagName;
-	}
-
-	/**
-	 * Parsing from a sequence of xml tokens helper.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 *
-	 * \returns the new instance of the automaton
-	 */
-	static OneTapeDTM parse ( ext::deque < sax::Token >::iterator & input );
-
-	/**
-	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
-	 *
-	 * \params input the iterator to sequence of xml tokens to parse from
-	 * \params automaton the automaton to add the rule to
-	 */
-	static void parseTransition ( ext::deque < sax::Token >::iterator & input, OneTapeDTM & automaton );
-
-	/**
-	 * Composing to a sequence of xml tokens helper.
-	 *
-	 * \param out the sink for new xml tokens representing the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void compose ( ext::deque < sax::Token > & out, const OneTapeDTM & automaton );
-
-	/**
-	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
-	 *
-	 * \param out the sink for xml tokens representing the rules of the automaton
-	 * \param automaton the automaton to compose
-	 */
-	static void composeTransitions ( ext::deque < sax::Token > & out, const OneTapeDTM & automaton );
-
 	/**
 	 * @copydoc object::ObjectBase::inc()
 	 */
@@ -618,75 +569,6 @@ OneTapeDTM<SymbolType, StateType>::operator std::string () const {
 	return ss.str();
 }
 
-template<class SymbolType, class StateType >
-OneTapeDTM<SymbolType, StateType> OneTapeDTM<SymbolType, StateType>::parse(ext::deque<sax::Token>::iterator& input) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, OneTapeDTM::getXmlTagName());
-
-	ext::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input);
-	ext::set<SymbolType> tapeSymbols = AutomatonFromXMLParser::parseTapeAlphabet<SymbolType>(input);
-	ext::set<SymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<SymbolType>(input);
-	SymbolType blank = AutomatonFromXMLParser::parseBlankSymbol<SymbolType>(input);
-	StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input);
-	ext::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input);
-
-	OneTapeDTM automaton(std::move(initialState), std::move(blank));
-	automaton.setStates(std::move(states));
-	automaton.setTapeAlphabet(std::move(tapeSymbols));
-	automaton.setInputAlphabet(std::move(inputSymbols));
-	automaton.setFinalStates(std::move(finalStates));
-
-	AutomatonFromXMLParser::parseTransitions<OneTapeDTM>(input, automaton);
-
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, OneTapeDTM::getXmlTagName());
-	return automaton;
-}
-
-template<class SymbolType, class StateType >
-void OneTapeDTM<SymbolType, StateType>::parseTransition(ext::deque<sax::Token>::iterator& input, OneTapeDTM<SymbolType, StateType>& automaton) {
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
-	StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
-	SymbolType inputSymbol = AutomatonFromXMLParser::parseTransitionInputSymbol<SymbolType>(input);
-	StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
-	SymbolType outputSymbol = AutomatonFromXMLParser::parseTransitionOutputSymbol<SymbolType>(input);
-	Shift shift = AutomatonFromXMLParser::parseTransitionShift(input);
-	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
-
-	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(outputSymbol), shift);
-}
-
-template<class SymbolType, class StateType >
-void OneTapeDTM<SymbolType, StateType>::compose(ext::deque<sax::Token>& out, const OneTapeDTM & automaton ) {
-	out.emplace_back(OneTapeDTM::getXmlTagName(), sax::Token::TokenType::START_ELEMENT);
-
-	AutomatonToXMLComposer::composeStates(out, automaton.getStates());
-	AutomatonToXMLComposer::composeTapeAlphabet(out, automaton.getTapeAlphabet());
-	AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
-	AutomatonToXMLComposer::composeBlankSymbol(out, automaton.getBlankSymbol());
-	AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
-	AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
-	composeTransitions(out, automaton);
-
-	out.emplace_back(OneTapeDTM::getXmlTagName(), sax::Token::TokenType::END_ELEMENT);
-}
-
-template<class SymbolType, class StateType >
-void OneTapeDTM<SymbolType, StateType>::composeTransitions(ext::deque<sax::Token>& out, const OneTapeDTM & automaton ) {
-	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
-	for(const auto& transition : automaton.getTransitions()) {
-		out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
-
-		AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
-		AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
-		AutomatonToXMLComposer::composeTransitionTo(out, std::get<0>(transition.second));
-		AutomatonToXMLComposer::composeTransitionOutputSymbol(out, std::get<1>(transition.second));
-		AutomatonToXMLComposer::composeTransitionShift(out, std::get<2>(transition.second));
-
-		out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
-	}
-
-	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
-}
-
 template < class SymbolType, class StateType >
 object::ObjectBase* OneTapeDTM < SymbolType, StateType >::inc() && {
 	return new object::UniqueObject(object::Object(std::move(*this)), primitive::Integer(0));
diff --git a/alib2data/src/automaton/xml/Counter/OneCounter.h b/alib2data/src/automaton/xml/Counter/OneCounter.h
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/alib2data/src/automaton/xml/Counter/TwoCounter.h b/alib2data/src/automaton/xml/Counter/TwoCounter.h
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/alib2data/src/automaton/xml/FSM/CompactNFA.cpp b/alib2data/src/automaton/xml/FSM/CompactNFA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..494a5f29b43854923cc88f2e2ce628e5f46b87eb
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/CompactNFA.cpp
@@ -0,0 +1,22 @@
+/*
+ * CompactNFA.cpp
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "CompactNFA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::CompactNFA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::CompactNFA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::CompactNFA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::CompactNFA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/FSM/CompactNFA.h b/alib2data/src/automaton/xml/FSM/CompactNFA.h
new file mode 100644
index 0000000000000000000000000000000000000000..c99bf875393db42f95113f8152c054fdb9711f60
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/CompactNFA.h
@@ -0,0 +1,148 @@
+/*
+ * CompactNFA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_COMPACT_DFA_H_
+#define _XML_COMPACT_DFA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/FSM/CompactNFA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class StateType >
+struct xmlApi < automaton::CompactNFA < SymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "CompactNFA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::CompactNFA < SymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::CompactNFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::CompactNFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::CompactNFA < SymbolType, StateType > & automaton );
+};
+
+template < class SymbolType, class StateType >
+automaton::CompactNFA < SymbolType, StateType > xmlApi < automaton::CompactNFA < SymbolType, StateType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set < StateType > states = automaton::AutomatonFromXMLParser::parseStates < StateType > ( input );
+	ext::set < SymbolType > inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState < StateType > ( input );
+	ext::set < StateType > finalStates = automaton::AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
+
+	automaton::CompactNFA < SymbolType, StateType > automaton ( std::move ( initialState ) );
+
+	automaton.setStates ( std::move ( states ) );
+	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
+	automaton.setFinalStates ( std::move ( finalStates ) );
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class SymbolType, class StateType >
+void xmlApi < automaton::CompactNFA < SymbolType, StateType > >::parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::CompactNFA < SymbolType, StateType > & automaton ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
+	ext::vector < SymbolType > inputString = automaton::AutomatonFromXMLParser::parseTransitionInputSymbolMultiple < SymbolType > ( input );
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
+
+	automaton.addTransition ( std::move ( from ), std::move ( inputString ), std::move ( to ) );
+}
+
+template < class SymbolType, class StateType >
+void xmlApi < automaton::CompactNFA < SymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::CompactNFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
+	automaton::AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
+	automaton::AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
+	automaton::AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class SymbolType, class StateType >
+void xmlApi < automaton::CompactNFA < SymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::CompactNFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
+
+	for ( const auto & transition : automaton.getTransitions ( ) )
+		for ( const auto & targetState : transition.second ) {
+			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
+			automaton::AutomatonToXMLComposer::composeTransitionInputSymbolMultiple ( out, transition.first.second );
+			automaton::AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
+
+			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
+		}
+
+	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_COMPACT_DFA_H_ */
diff --git a/alib2data/src/automaton/xml/FSM/DFA.cpp b/alib2data/src/automaton/xml/FSM/DFA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5e4b221aeb21cb9ffb3265bbba497f81f3a52386
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/DFA.cpp
@@ -0,0 +1,22 @@
+/*
+ * DFA.cpp
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "DFA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::DFA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::DFA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::DFA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::DFA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/FSM/DFA.h b/alib2data/src/automaton/xml/FSM/DFA.h
new file mode 100644
index 0000000000000000000000000000000000000000..906a4d7df999421a3308674cc25392744ea3240f
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/DFA.h
@@ -0,0 +1,147 @@
+/*
+ * DFA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_DFA_H_
+#define _XML_DFA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/FSM/DFA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class StateType >
+struct xmlApi < automaton::DFA < SymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "DFA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::DFA < SymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::DFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::DFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::DFA < SymbolType, StateType > & automaton );
+};
+
+template < class SymbolType, class StateType >
+automaton::DFA < SymbolType, StateType > xmlApi < automaton::DFA < SymbolType, StateType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set < StateType > states = automaton::AutomatonFromXMLParser::parseStates < StateType > ( input );
+	ext::set < SymbolType > inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState < StateType > ( input );
+	ext::set < StateType > finalStates = automaton::AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
+
+	automaton::DFA < SymbolType, StateType> automaton ( std::move ( initialState ) );
+
+	automaton.setStates ( std::move ( states ) );
+	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
+	automaton.setFinalStates ( std::move ( finalStates ) );
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class SymbolType, class StateType >
+void xmlApi < automaton::DFA < SymbolType, StateType > >::parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::DFA < SymbolType, StateType > & automaton ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
+	SymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol < SymbolType > ( input );
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
+
+	automaton.addTransition ( std::move ( from ), std::move ( inputSymbol ), std::move ( to ) );
+}
+
+template < class SymbolType, class StateType >
+void xmlApi < automaton::DFA < SymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::DFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
+	automaton::AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
+	automaton::AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
+	automaton::AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class SymbolType, class StateType >
+void xmlApi < automaton::DFA < SymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::DFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
+
+	for ( const auto & transition : automaton.getTransitions ( ) ) {
+		out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
+		automaton::AutomatonToXMLComposer::composeTransitionInputSymbol ( out, transition.first.second );
+		automaton::AutomatonToXMLComposer::composeTransitionTo ( out, transition.second );
+
+		out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
+	}
+
+	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_DFA_H_ */
diff --git a/alib2data/src/automaton/xml/FSM/EpsilonNFA.cpp b/alib2data/src/automaton/xml/FSM/EpsilonNFA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a0629ecd9801e400c098cd5dfc13a7f07c24c7d1
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/EpsilonNFA.cpp
@@ -0,0 +1,22 @@
+/*
+ * EpsilonNFA.cpp
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "EpsilonNFA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::EpsilonNFA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::EpsilonNFA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::EpsilonNFA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::EpsilonNFA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/FSM/EpsilonNFA.h b/alib2data/src/automaton/xml/FSM/EpsilonNFA.h
new file mode 100644
index 0000000000000000000000000000000000000000..dac7d62d03b02ffda2b4401e3ee00e651f51ffeb
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/EpsilonNFA.h
@@ -0,0 +1,148 @@
+/*
+ * EpsilonNFA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_EPSILON_NFA_H_
+#define _XML_EPSILON_NFA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/FSM/EpsilonNFA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class EpsilonType, class StateType >
+struct xmlApi < automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "EpsilonNFA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > & automaton );
+};
+
+template < class SymbolType, class EpsilonType, class StateType >
+automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > xmlApi < automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set < StateType > states = automaton::AutomatonFromXMLParser::parseStates < StateType > ( input );
+	ext::set < SymbolType > inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState < StateType > ( input );
+	ext::set < StateType > finalStates = automaton::AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
+
+	automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > automaton ( std::move ( initialState ) );
+
+	automaton.setStates ( std::move ( states ) );
+	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
+	automaton.setFinalStates ( std::move ( finalStates ) );
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName() );
+	return automaton;
+}
+
+template < class SymbolType, class EpsilonType, class StateType >
+void xmlApi < automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > >::parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > & automaton ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
+	ext::variant < EpsilonType, SymbolType > inputVariant = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol < EpsilonType, SymbolType > ( input );
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
+
+	automaton.addTransition ( std::move ( from ), std::move ( inputVariant ), std::move ( to ) );
+}
+
+template < class SymbolType, class EpsilonType, class StateType >
+void xmlApi < automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
+	automaton::AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
+	automaton::AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
+	automaton::AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class SymbolType, class EpsilonType, class StateType >
+void xmlApi < automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > & automaton ) {
+	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
+
+	for ( const auto & transition : automaton.getTransitions ( ) )
+		for ( const auto & targetState : transition.second ) {
+			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
+			automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol ( out, transition.first.second );
+			automaton::AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
+
+			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
+		}
+
+	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_EPSILON_NFA_H_ */
diff --git a/alib2data/src/automaton/xml/FSM/ExtendedNFA.cpp b/alib2data/src/automaton/xml/FSM/ExtendedNFA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..94554666ccd99aeee7b138e935d7cf13d3ec992b
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/ExtendedNFA.cpp
@@ -0,0 +1,22 @@
+/*
+ * ExtendedNFA.cpp
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "ExtendedNFA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::ExtendedNFA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::ExtendedNFA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::ExtendedNFA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::ExtendedNFA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/FSM/ExtendedNFA.h b/alib2data/src/automaton/xml/FSM/ExtendedNFA.h
new file mode 100644
index 0000000000000000000000000000000000000000..9d7c6ae98890b08114f7b0d5e513414600f6db34
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/ExtendedNFA.h
@@ -0,0 +1,148 @@
+/*
+ * ExtendedNFA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_EXTENDED_NFA_H_
+#define _XML_EXTENDED_NFA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/FSM/ExtendedNFA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class StateType >
+struct xmlApi < automaton::ExtendedNFA < SymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "ExtendedNFA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::ExtendedNFA < SymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::ExtendedNFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::ExtendedNFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::ExtendedNFA < SymbolType, StateType > & automaton );
+};
+
+template<class SymbolType, class StateType >
+automaton::ExtendedNFA < SymbolType, StateType > xmlApi < automaton::ExtendedNFA < SymbolType, StateType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set < StateType > states = automaton::AutomatonFromXMLParser::parseStates < StateType > ( input );
+	ext::set < SymbolType > inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState < StateType > ( input );
+	ext::set < StateType > finalStates = automaton::AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
+
+	automaton::ExtendedNFA < SymbolType, StateType > automaton ( std::move ( initialState ) );
+
+	automaton.setStates ( std::move ( states ) );
+	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
+	automaton.setFinalStates ( std::move ( finalStates ) );
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template<class SymbolType, class StateType >
+void xmlApi < automaton::ExtendedNFA < SymbolType, StateType > >::parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::ExtendedNFA < SymbolType, StateType > & automaton ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
+	regexp::UnboundedRegExpStructure < SymbolType > inputRegexp = automaton::AutomatonFromXMLParser::parseTransitionInputRegexp < SymbolType > ( input );
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
+
+	automaton.addTransition ( std::move ( from ), std::move ( inputRegexp ), std::move ( to ) );
+}
+
+template<class SymbolType, class StateType >
+void xmlApi < automaton::ExtendedNFA < SymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::ExtendedNFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
+	automaton::AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
+	automaton::AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
+	automaton::AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template<class SymbolType, class StateType >
+void xmlApi < automaton::ExtendedNFA < SymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::ExtendedNFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
+
+	for ( const auto & transition : automaton.getTransitions ( ) )
+		for ( const auto & targetState : transition.second ) {
+			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
+			automaton::AutomatonToXMLComposer::composeTransitionInputRegexp ( out, transition.first.second );
+			automaton::AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
+
+			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
+		}
+
+	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_EXTENDED_NFA_H_ */
diff --git a/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.cpp b/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ba115fd0596b69ea657141e5599127a0b7765c24
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.cpp
@@ -0,0 +1,22 @@
+/*
+ * MultiInitialStateNFA.cpp
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "MultiInitialStateNFA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::MultiInitialStateNFA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::MultiInitialStateNFA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::MultiInitialStateNFA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::MultiInitialStateNFA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.h
new file mode 100644
index 0000000000000000000000000000000000000000..c464b9ef9faebb82eefbf0b101b770079ea880a2
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/MultiInitialStateNFA.h
@@ -0,0 +1,149 @@
+/*
+ * MultiInitialStateNFA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_MULTI_INITIAL_STATE_NFA_H_
+#define _XML_MULTI_INITIAL_STATE_NFA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/FSM/MultiInitialStateNFA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class StateType >
+struct xmlApi < automaton::MultiInitialStateNFA < SymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "MultiInitialStateNFA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::MultiInitialStateNFA < SymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::MultiInitialStateNFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::MultiInitialStateNFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::MultiInitialStateNFA < SymbolType, StateType > & automaton );
+};
+
+template < class SymbolType, class StateType >
+automaton::MultiInitialStateNFA < SymbolType, StateType > xmlApi < automaton::MultiInitialStateNFA < SymbolType, StateType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set < StateType > states = automaton::AutomatonFromXMLParser::parseStates < StateType > ( input );
+	ext::set < SymbolType > inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
+	ext::set < StateType > initialStates = automaton::AutomatonFromXMLParser::parseInitialStates < StateType > ( input );
+	ext::set < StateType > finalStates = automaton::AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
+
+	automaton::MultiInitialStateNFA < SymbolType, StateType > automaton;
+
+	automaton.setStates ( std::move ( states ) );
+	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
+	automaton.setInitialStates ( std::move ( initialStates ) );
+	automaton.setFinalStates ( std::move ( finalStates ) );
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class SymbolType, class StateType >
+void xmlApi < automaton::MultiInitialStateNFA < SymbolType, StateType > >::parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::MultiInitialStateNFA < SymbolType, StateType > & automaton ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
+	SymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol < SymbolType > ( input );
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
+
+	automaton.addTransition ( std::move ( from ), std::move ( inputSymbol ), std::move ( to ) );
+}
+
+template < class SymbolType, class StateType >
+void xmlApi < automaton::MultiInitialStateNFA < SymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::MultiInitialStateNFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
+	automaton::AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
+	automaton::AutomatonToXMLComposer::composeInitialStates ( out, automaton.getInitialStates ( ) );
+	automaton::AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class SymbolType, class StateType >
+void xmlApi < automaton::MultiInitialStateNFA < SymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::MultiInitialStateNFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
+
+	for ( const auto & transition : automaton.getTransitions ( ) )
+		for ( const auto & targetState : transition.second ) {
+			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
+			automaton::AutomatonToXMLComposer::composeTransitionInputSymbol ( out, transition.first.second );
+			automaton::AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
+
+			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
+		}
+
+	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_MULTI_INITIAL_STATE_NFA_H_ */
diff --git a/alib2data/src/automaton/xml/FSM/NFA.cpp b/alib2data/src/automaton/xml/FSM/NFA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ccb9be9263a98949eaf825911bf27e327e8ebd7c
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/NFA.cpp
@@ -0,0 +1,22 @@
+/*
+ * NFA.cpp
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "NFA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::NFA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::NFA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::NFA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::NFA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/FSM/NFA.h b/alib2data/src/automaton/xml/FSM/NFA.h
new file mode 100644
index 0000000000000000000000000000000000000000..53408aae1e4f516b03c9e6090e421034b149c8d6
--- /dev/null
+++ b/alib2data/src/automaton/xml/FSM/NFA.h
@@ -0,0 +1,148 @@
+/*
+ * NFA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_NFA_H_
+#define _XML_NFA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/FSM/NFA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class StateType >
+struct xmlApi < automaton::NFA < SymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "NFA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::NFA < SymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::NFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::NFA < SymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::NFA < SymbolType, StateType > & automaton );
+};
+
+template<class SymbolType, class StateType >
+automaton::NFA < SymbolType, StateType > xmlApi < automaton::NFA < SymbolType, StateType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set < StateType > states = automaton::AutomatonFromXMLParser::parseStates < StateType > ( input );
+	ext::set < SymbolType > inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet < SymbolType > ( input );
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState < StateType > ( input );
+	ext::set < StateType > finalStates = automaton::AutomatonFromXMLParser::parseFinalStates < StateType > ( input );
+
+	automaton::NFA < SymbolType, StateType > automaton ( std::move ( initialState ) );
+
+	automaton.setStates ( std::move ( states ) );
+	automaton.setInputAlphabet ( std::move ( inputSymbols ) );
+	automaton.setFinalStates ( std::move ( finalStates ) );
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template<class SymbolType, class StateType >
+void xmlApi < automaton::NFA < SymbolType, StateType > >::parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::NFA < SymbolType, StateType > & automaton ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, "transition" );
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom < StateType > ( input );
+	SymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol < SymbolType > ( input );
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo < StateType > ( input );
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, "transition" );
+
+	automaton.addTransition ( std::move ( from ), std::move ( inputSymbol ), std::move ( to ) );
+}
+
+template<class SymbolType, class StateType >
+void xmlApi < automaton::NFA < SymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::NFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates ( out, automaton.getStates ( ) );
+	automaton::AutomatonToXMLComposer::composeInputAlphabet ( out, automaton.getInputAlphabet ( ) );
+	automaton::AutomatonToXMLComposer::composeInitialState ( out, automaton.getInitialState ( ) );
+	automaton::AutomatonToXMLComposer::composeFinalStates ( out, automaton.getFinalStates ( ) );
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template<class SymbolType, class StateType >
+void xmlApi < automaton::NFA < SymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::NFA < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( "transitions", sax::Token::TokenType::START_ELEMENT );
+
+	for ( const auto & transition : automaton.getTransitions ( ) )
+		for ( const auto & targetState : transition.second ) {
+			out.emplace_back ( "transition", sax::Token::TokenType::START_ELEMENT );
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom ( out, transition.first.first );
+			automaton::AutomatonToXMLComposer::composeTransitionInputSymbol ( out, transition.first.second );
+			automaton::AutomatonToXMLComposer::composeTransitionTo ( out, targetState );
+
+			out.emplace_back ( "transition", sax::Token::TokenType::END_ELEMENT );
+		}
+
+	out.emplace_back ( "transitions", sax::Token::TokenType::END_ELEMENT );
+}
+
+} /* namespace core */
+
+#endif /* _XML_NFA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/DPDA.cpp b/alib2data/src/automaton/xml/PDA/DPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4810abfd5a7d8501c5b5b5522bdc7fd2b41b6661
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/DPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * DPDA.cpp
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "DPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::DPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::DPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::DPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::DPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/DPDA.h b/alib2data/src/automaton/xml/PDA/DPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..925f19cb35a3c3fc3ce78d3ac5baf84797cde1ff
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/DPDA.h
@@ -0,0 +1,154 @@
+/*
+ * DPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_DPDA_H_
+#define _XML_DPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/DPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "DPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+};
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > xmlApi < automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<InputSymbolType> inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
+	ext::set<PushdownStoreSymbolType> pushdownStoreSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType>(input);
+	PushdownStoreSymbolType initialPushdownStoreSymbol = automaton::AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setPushdownStoreAlphabet(std::move(pushdownStoreSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+	ext::variant<EpsilonType, InputSymbolType> inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
+	ext::vector<PushdownStoreSymbolType> pop = automaton::AutomatonFromXMLParser::parseTransitionPop<PushdownStoreSymbolType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+	ext::vector<PushdownStoreSymbolType> push = automaton::AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push));
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getTransitions()) {
+		out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionPop(out, std::get<2>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second.first);
+		automaton::AutomatonToXMLComposer::composeTransitionPush(out, transition.second.second);
+
+		out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
+	}
+
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_DPDA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.cpp b/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..af173af811809016ed6e08ff51728d2e9138cd8f
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * InputDrivenDPDA.cpp
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "InputDrivenDPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::InputDrivenDPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::InputDrivenDPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::InputDrivenDPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::InputDrivenDPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..0c86ce798daa486447fec77eb7c9a31bd5741be2
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/InputDrivenDPDA.h
@@ -0,0 +1,152 @@
+/*
+ * InputDrivenDPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_INPUT_DRIVEN_DPDA_H_
+#define _XML_INPUT_DRIVEN_DPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/InputDrivenDPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "InputDrivenDPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+};
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > xmlApi < automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<InputSymbolType> inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
+	ext::set<PushdownStoreSymbolType> pushdownStoreSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType>(input);
+	PushdownStoreSymbolType initialPushdownStoreSymbol = automaton::AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setPushdownStoreAlphabet(std::move(pushdownStoreSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton.setPushdownStoreOperations(automaton::AutomatonFromXMLParser::parseInputToPushdownStoreOperation<InputSymbolType, PushdownStoreSymbolType>(input));
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+	InputSymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(to));
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	automaton::AutomatonToXMLComposer::composeInputToPushdownStoreOperation(out, automaton.getPushdownStoreOperations());
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getTransitions()) {
+		out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+		automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
+
+		out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
+	}
+
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_INPUT_DRIVEN_DPDA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.cpp b/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6516c331130e7279b4a0225029f8148c00a19906
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * InputDrivenNPDA.cpp
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "InputDrivenNPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::InputDrivenNPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::InputDrivenNPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::InputDrivenNPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::InputDrivenNPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..61512f78fc6a9b6de6ff8c5eb44d51502e4a3695
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/InputDrivenNPDA.h
@@ -0,0 +1,154 @@
+/*
+ * InputDrivenNPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_INPUT_DRIVEN_NPDA_H_
+#define _XML_INPUT_DRIVEN_NPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/InputDrivenNPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "InputDrivenNPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+};
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > xmlApi < automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType > states = automaton::AutomatonFromXMLParser::parseStates<StateType >(input);
+	ext::set<InputSymbolType> inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
+	ext::set<PushdownStoreSymbolType> pushdownStoreSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType >(input);
+	PushdownStoreSymbolType initialPushdownStoreSymbol = automaton::AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType > finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType >(input);
+
+	automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setPushdownStoreAlphabet(std::move(pushdownStoreSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton.setPushdownStoreOperations(automaton::AutomatonFromXMLParser::parseInputToPushdownStoreOperation<InputSymbolType, PushdownStoreSymbolType>(input));
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, xmlTagName());
+	return automaton;
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType >(input);
+	InputSymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType >(input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(to));
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	automaton::AutomatonToXMLComposer::composeInputToPushdownStoreOperation(out, automaton.getPushdownStoreOperations());
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+			automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, target);
+
+			out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_INPUT_DRIVEN_NPDA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/NPDA.cpp b/alib2data/src/automaton/xml/PDA/NPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..52f6431c7ff1cdc50ee6a1ebfdebfe28ed066b7e
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/NPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * NPDA.cpp
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "NPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::NPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::NPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::NPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::NPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/NPDA.h b/alib2data/src/automaton/xml/PDA/NPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..bd331edc9c62417f9dbed9c804dfe61d2c008f17
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/NPDA.h
@@ -0,0 +1,156 @@
+/*
+ * NPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_NPDA_H_
+#define _XML_NPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/NPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName ( ) {
+		static std::string xmlTagName = "NPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & ou, const automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automatont );
+};
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > xmlApi < automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set < InputSymbolType > inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet < InputSymbolType > ( input );
+	ext::set<PushdownStoreSymbolType> pushdownStoreSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType>(input);
+	PushdownStoreSymbolType initialPushdownStoreSymbol = automaton::AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setPushdownStoreAlphabet(std::move(pushdownStoreSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+	ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol < EpsilonType, InputSymbolType > ( input );
+	ext::vector<PushdownStoreSymbolType> pop = automaton::AutomatonFromXMLParser::parseTransitionPop<PushdownStoreSymbolType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+	ext::vector<PushdownStoreSymbolType> push = automaton::AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push));
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::NPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionPop(out, std::get<2>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, target.first);
+			automaton::AutomatonToXMLComposer::composeTransitionPush(out, target.second);
+
+			out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_NPDA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/NPDTA.cpp b/alib2data/src/automaton/xml/PDA/NPDTA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b854540f52433629a73af86d30c801b5f70c673c
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/NPDTA.cpp
@@ -0,0 +1,22 @@
+/*
+ * NPDTA.cpp
+ *
+ *  Created on: 10. 5. 2016
+ *      Author: Jakub Doupal
+ */
+
+#include "NPDTA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::NPDTA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::NPDTA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::NPDTA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::NPDTA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/NPDTA.h b/alib2data/src/automaton/xml/PDA/NPDTA.h
new file mode 100644
index 0000000000000000000000000000000000000000..bd1bca13b95d0e79fb3b0876ddf750e9065deb37
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/NPDTA.h
@@ -0,0 +1,161 @@
+/*
+ * NPDTA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: 10. 5. 2016
+ *      Author: Jakub Doupal
+ */
+
+#ifndef _XML_NPDTA_H_
+#define _XML_NPDTA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/NPDTA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "NPDTA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+};
+
+template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > xmlApi < automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set < InputSymbolType > inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet < InputSymbolType > ( input );
+	ext::set<PushdownStoreSymbolType> stackSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	ext::set < OutputSymbolType > outputSymbols = automaton::AutomatonFromXMLParser::parseOutputAlphabet < OutputSymbolType > ( input );
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType>(input);
+	PushdownStoreSymbolType initialPushdownStoreSymbol = automaton::AutomatonFromXMLParser::parseInitialPushdownStoreSymbol < PushdownStoreSymbolType > ( input );
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
+	automaton.setOutputAlphabet(std::move(outputSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+	ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
+	ext::vector<PushdownStoreSymbolType> pop = automaton::AutomatonFromXMLParser::parseTransitionPop<PushdownStoreSymbolType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+	ext::vector<PushdownStoreSymbolType> push = automaton::AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
+	ext::vector < OutputSymbolType > output = automaton::AutomatonFromXMLParser::parseTransitionOutputSymbolMultiple < OutputSymbolType > (input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push), std::move(output));
+}
+
+template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::compose(ext::deque<sax::Token>& out, const automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeOutputAlphabet(out, automaton.getOutputAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions(out, automaton);
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class OutputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::composeTransitions(ext::deque<sax::Token>& out, const automaton::NPDTA < InputSymbolType, OutputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionPop(out, std::get<2>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, std::get<0>(target));
+			automaton::AutomatonToXMLComposer::composeTransitionPush(out, std::get<1>(target));
+			automaton::AutomatonToXMLComposer::composeTransitionOutputSymbolMultiple(out, std::get<2>(target));
+
+			out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_NPDTA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.cpp b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fadda2739a67eb659cb4e780f570c82f720ad9d2
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * RealTimeHeightDeterministicDPDA.cpp
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "RealTimeHeightDeterministicDPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::RealTimeHeightDeterministicDPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::RealTimeHeightDeterministicDPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::RealTimeHeightDeterministicDPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::RealTimeHeightDeterministicDPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..d05dc25fbdc8429aba10b9d1b137576eef44ce00
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicDPDA.h
@@ -0,0 +1,189 @@
+/*
+ * RealTimeHeightDeterministicDPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA_H_
+#define _XML_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/RealTimeHeightDeterministicDPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "RealTimeHeightDeterministicDPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automatont );
+};
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > xmlApi < automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<InputSymbolType> inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
+	ext::set<PushdownStoreSymbolType> stackSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType>(input);
+	PushdownStoreSymbolType bottomOfTheStackSymbol = automaton::AutomatonFromXMLParser::parseBottomOfTheStackSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(bottomOfTheStackSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton) {
+	if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition")) {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType,InputSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+		PushdownStoreSymbolType push = automaton::AutomatonFromXMLParser::parseTransitionSinglePush<PushdownStoreSymbolType>(input);
+
+		automaton.addCallTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(push));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "callTransition");
+	} else if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition")) {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType,InputSymbolType>(input);
+		PushdownStoreSymbolType pop = automaton::AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+
+		automaton.addReturnTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "returnTransition");
+	} else {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "localTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType,InputSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+
+		automaton.addLocalTransition(std::move(from), std::move(inputSymbol), std::move(to));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "localTransition");
+	}
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::RealTimeHeightDeterministicDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getCallTransitions()) {
+		out.emplace_back("callTransition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+		automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, transition.first.second);
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second.first);
+		automaton::AutomatonToXMLComposer::composeTransitionSinglePush(out, transition.second.second);
+
+		out.emplace_back("callTransition", sax::Token::TokenType::END_ELEMENT);
+	}
+	for(const auto& transition : automaton.getReturnTransitions()) {
+		out.emplace_back("returnTransition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
+
+		out.emplace_back("returnTransition", sax::Token::TokenType::END_ELEMENT);
+	}
+	for(const auto& transition : automaton.getLocalTransitions()) {
+		out.emplace_back("localTransition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+		automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, transition.first.second);
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
+
+		out.emplace_back("localTransition", sax::Token::TokenType::END_ELEMENT);
+	}
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.cpp b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..488c9831e015ded4f772f6fc6d49b56449efd525
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * RealTimeHeightDeterministicNPDA.cpp
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "RealTimeHeightDeterministicNPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::RealTimeHeightDeterministicNPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::RealTimeHeightDeterministicNPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::RealTimeHeightDeterministicNPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::RealTimeHeightDeterministicNPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..9e80f3317d0725a64fdf69404c43f88a0cdf0079
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/RealTimeHeightDeterministicNPDA.h
@@ -0,0 +1,196 @@
+/*
+ * RealTimeHeightDeterministicNPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA_H_
+#define _XML_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/RealTimeHeightDeterministicNPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "RealTimeHeightDeterministicNPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+};
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > xmlApi < automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<InputSymbolType> inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
+	ext::set<PushdownStoreSymbolType> stackSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	ext::set<StateType> initialStates = automaton::AutomatonFromXMLParser::parseInitialStates<StateType>(input);
+	PushdownStoreSymbolType bottomOfTheStackSymbol = automaton::AutomatonFromXMLParser::parseBottomOfTheStackSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(bottomOfTheStackSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
+	automaton.setInitialStates(std::move(initialStates));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton) {
+	if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition")) {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+		PushdownStoreSymbolType push = automaton::AutomatonFromXMLParser::parseTransitionSinglePush<PushdownStoreSymbolType>(input);
+
+		automaton.addCallTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(push));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "callTransition");
+	} else if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition")) {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
+		PushdownStoreSymbolType pop = automaton::AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+
+		automaton.addReturnTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "returnTransition");
+	} else {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "localTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+
+		automaton.addLocalTransition(std::move(from), std::move(inputSymbol), std::move(to));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "localTransition");
+	}
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialStates(out, automaton.getInitialStates());
+	automaton::AutomatonToXMLComposer::composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions(out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::RealTimeHeightDeterministicNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getCallTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("callTransition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+			automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, transition.first.second);
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, target.first);
+			automaton::AutomatonToXMLComposer::composeTransitionSinglePush(out, target.second);
+
+			out.emplace_back("callTransition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+	for(const auto& transition : automaton.getReturnTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("returnTransition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, target);
+
+			out.emplace_back("returnTransition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+	for(const auto& transition : automaton.getLocalTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("localTransition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+			automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, transition.first.second);
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, target);
+
+			out.emplace_back("localTransition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/SinglePopDPDA.cpp b/alib2data/src/automaton/xml/PDA/SinglePopDPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f45ed52b797cb4ac44084bdce1a992f08f7ac683
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/SinglePopDPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * SinglePopDPDA.cpp
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "SinglePopDPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::SinglePopDPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::SinglePopDPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::SinglePopDPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::SinglePopDPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/SinglePopDPDA.h b/alib2data/src/automaton/xml/PDA/SinglePopDPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..328476b1580424ace22e7338bce7328b9698b87a
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/SinglePopDPDA.h
@@ -0,0 +1,154 @@
+/*
+ * SinglePopDPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_SINGLE_POP_DPDA_H_
+#define _XML_SINGLE_POP_DPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/SinglePopDPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "SinglePopDPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+};
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > xmlApi < automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<InputSymbolType> inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
+	ext::set<PushdownStoreSymbolType> stackSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType>(input);
+	PushdownStoreSymbolType initialPushdownStoreSymbol = automaton::AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+	ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
+	PushdownStoreSymbolType pop = automaton::AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+	ext::vector<PushdownStoreSymbolType> push = automaton::AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push));
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::SinglePopDPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getTransitions()) {
+		out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second.first);
+		automaton::AutomatonToXMLComposer::composeTransitionPush(out, transition.second.second);
+
+		out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
+	}
+
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_SINGLE_POP_DPDA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/SinglePopNPDA.cpp b/alib2data/src/automaton/xml/PDA/SinglePopNPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a6d858975a24613b30611f730cdabcc5dee40e48
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/SinglePopNPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * SinglePopNPDA.cpp
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "SinglePopNPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::SinglePopNPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::SinglePopNPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::SinglePopNPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::SinglePopNPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/SinglePopNPDA.h b/alib2data/src/automaton/xml/PDA/SinglePopNPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..f9d924986ae96b4c867a2f77016faea6507b56bc
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/SinglePopNPDA.h
@@ -0,0 +1,156 @@
+/*
+ * SinglePopNPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_SINGLE_POP_NPDA_H_
+#define _XML_SINGLE_POP_NPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/SinglePopNPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "SinglePopNPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton );
+};
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > xmlApi < automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<InputSymbolType> inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input);
+	ext::set<PushdownStoreSymbolType> stackSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType>(input);
+	PushdownStoreSymbolType initialPushdownStoreSymbol = automaton::AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(initialPushdownStoreSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+	ext::variant < EpsilonType, InputSymbolType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input);
+	PushdownStoreSymbolType pop = automaton::AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+	ext::vector<PushdownStoreSymbolType> push = automaton::AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push));
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeInitialPushdownStoreSymbol(out, automaton.getInitialSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::SinglePopNPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionInputEpsilonSymbol(out, std::get<1>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, target.first);
+			automaton::AutomatonToXMLComposer::composeTransitionPush(out, target.second);
+
+			out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_SINGLE_POP_NPDA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.cpp b/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..850d62c103ccf96fef57d0c9d1dae37b2f1bc327
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * VisiblyPushdownDPDA.cpp
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "VisiblyPushdownDPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::VisiblyPushdownDPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::VisiblyPushdownDPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::VisiblyPushdownDPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::VisiblyPushdownDPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..84f4ae5b4828de3311646f7a68041bbdd78b3f36
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/VisiblyPushdownDPDA.h
@@ -0,0 +1,195 @@
+/*
+ * VisiblyPushdownDPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_VISIBLY_PUSHDOWN_DPDA_H_
+#define _XML_VISIBLY_PUSHDOWN_DPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/VisiblyPushdownDPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "VisiblyPushdownDPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+};
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > xmlApi < automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<InputSymbolType> callAlphabet = automaton::AutomatonFromXMLParser::parseCallInputAlphabet<InputSymbolType>(input);
+	ext::set<InputSymbolType> returnAlphabet = automaton::AutomatonFromXMLParser::parseReturnInputAlphabet<InputSymbolType>(input);
+	ext::set<InputSymbolType> localAlphabet = automaton::AutomatonFromXMLParser::parseLocalInputAlphabet<InputSymbolType>(input);
+	ext::set<PushdownStoreSymbolType> stackSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType>(input);
+	PushdownStoreSymbolType bottomOfTheStackSymbol = automaton::AutomatonFromXMLParser::parseBottomOfTheStackSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > automaton(std::move(initialState), std::move(bottomOfTheStackSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setCallInputAlphabet(std::move(callAlphabet));
+	automaton.setReturnInputAlphabet(std::move(returnAlphabet));
+	automaton.setLocalInputAlphabet(std::move(localAlphabet));
+	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton) {
+	if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition")) {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		InputSymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+		PushdownStoreSymbolType push = automaton::AutomatonFromXMLParser::parseTransitionSinglePush<PushdownStoreSymbolType>(input);
+
+		automaton.addCallTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(push));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "callTransition");
+	} else if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition")) {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		InputSymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
+		PushdownStoreSymbolType pop = automaton::AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+
+		automaton.addReturnTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "returnTransition");
+	} else {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "localTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		InputSymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol<InputSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+
+		automaton.addLocalTransition(std::move(from), std::move(inputSymbol), std::move(to));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "localTransition");
+	}
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeCallInputAlphabet(out, automaton.getCallInputAlphabet());
+	automaton::AutomatonToXMLComposer::composeReturnInputAlphabet(out, automaton.getReturnInputAlphabet());
+	automaton::AutomatonToXMLComposer::composeLocalInputAlphabet(out, automaton.getLocalInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::composeTransitions ( ext::deque < sax::Token > & out, const automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getCallTransitions()) {
+		out.emplace_back("callTransition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+		automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second.first);
+		automaton::AutomatonToXMLComposer::composeTransitionSinglePush(out, transition.second.second);
+
+		out.emplace_back("callTransition", sax::Token::TokenType::END_ELEMENT);
+	}
+	for(const auto& transition : automaton.getReturnTransitions()) {
+		out.emplace_back("returnTransition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, std::get<1>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
+
+		out.emplace_back("returnTransition", sax::Token::TokenType::END_ELEMENT);
+	}
+	for(const auto& transition : automaton.getLocalTransitions()) {
+		out.emplace_back("localTransition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+		automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
+
+		out.emplace_back("localTransition", sax::Token::TokenType::END_ELEMENT);
+	}
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_VISIBLY_PUSHDOWN_DPDA_H_ */
diff --git a/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.cpp b/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e46ac9eb3a7ffa17b7443be6ea8d5ee2b1684b5b
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.cpp
@@ -0,0 +1,22 @@
+/*
+ * VisiblyPushdownNPDA.cpp
+ *
+ *  Created on: Apr 10, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "VisiblyPushdownNPDA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::VisiblyPushdownNPDA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::VisiblyPushdownNPDA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::VisiblyPushdownNPDA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::VisiblyPushdownNPDA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.h
new file mode 100644
index 0000000000000000000000000000000000000000..763bd142c66cfda350163c72123af8b0c859f26a
--- /dev/null
+++ b/alib2data/src/automaton/xml/PDA/VisiblyPushdownNPDA.h
@@ -0,0 +1,202 @@
+/*
+ * VisiblyPushdownNPDA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 25, 2013
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_VISIBLY_PUSHDOWN_NPDA_H_
+#define _XML_VISIBLY_PUSHDOWN_NPDA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/PDA/VisiblyPushdownNPDA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+struct xmlApi < automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "VisiblyPushdownNPDA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton );
+};
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > xmlApi < automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<InputSymbolType> callInputAlphabet = automaton::AutomatonFromXMLParser::parseCallInputAlphabet<InputSymbolType>(input);
+	ext::set<InputSymbolType> returnInputAlphabet = automaton::AutomatonFromXMLParser::parseReturnInputAlphabet<InputSymbolType>(input);
+	ext::set<InputSymbolType> localInputAlphabet = automaton::AutomatonFromXMLParser::parseLocalInputAlphabet<InputSymbolType>(input);
+	ext::set<PushdownStoreSymbolType> stackSymbols = automaton::AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input);
+	ext::set<StateType> initialStates = automaton::AutomatonFromXMLParser::parseInitialStates<StateType>(input);
+	PushdownStoreSymbolType bottomOfTheStackSymbol = automaton::AutomatonFromXMLParser::parseBottomOfTheStackSymbol<PushdownStoreSymbolType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > automaton(std::move(bottomOfTheStackSymbol));
+	automaton.setStates(std::move(states));
+	automaton.setCallInputAlphabet(std::move(callInputAlphabet));
+	automaton.setReturnInputAlphabet(std::move(returnInputAlphabet));
+	automaton.setLocalInputAlphabet(std::move(localInputAlphabet));
+	automaton.setPushdownStoreAlphabet(std::move(stackSymbols));
+	automaton.setInitialStates(std::move(initialStates));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton) {
+	if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition")) {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "callTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		InputSymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol < InputSymbolType > ( input );
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+		PushdownStoreSymbolType push = automaton::AutomatonFromXMLParser::parseTransitionSinglePush<PushdownStoreSymbolType>(input);
+
+		automaton.addCallTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(push));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "callTransition");
+	} else if(sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition")) {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "returnTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		InputSymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol < InputSymbolType > ( input );
+		PushdownStoreSymbolType pop = automaton::AutomatonFromXMLParser::parseTransitionSinglePop<PushdownStoreSymbolType>(input);
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+
+		automaton.addReturnTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "returnTransition");
+	} else {
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "localTransition");
+		StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+		InputSymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol < InputSymbolType > ( input );
+		StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+
+		automaton.addLocalTransition(std::move(from), std::move(inputSymbol), std::move(to));
+		sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "localTransition");
+	}
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::compose ( ext::deque < sax::Token > & out, const automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeCallInputAlphabet(out, automaton.getCallInputAlphabet());
+	automaton::AutomatonToXMLComposer::composeReturnInputAlphabet(out, automaton.getReturnInputAlphabet());
+	automaton::AutomatonToXMLComposer::composeLocalInputAlphabet(out, automaton.getLocalInputAlphabet());
+	automaton::AutomatonToXMLComposer::composePushdownStoreAlphabet(out, automaton.getPushdownStoreAlphabet());
+	automaton::AutomatonToXMLComposer::composeInitialStates(out, automaton.getInitialStates());
+	automaton::AutomatonToXMLComposer::composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions ( out, automaton );
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class InputSymbolType, class PushdownStoreSymbolType, class StateType >
+void xmlApi < automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > >::composeTransitions(ext::deque<sax::Token>& out, const automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getCallTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("callTransition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+			automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, target.first);
+			automaton::AutomatonToXMLComposer::composeTransitionSinglePush(out, target.second);
+
+			out.emplace_back("callTransition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+	for(const auto& transition : automaton.getReturnTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("returnTransition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, std::get<0>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, std::get<1>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionSinglePop(out, std::get<2>(transition.first));
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, target);
+
+			out.emplace_back("returnTransition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+	for(const auto& transition : automaton.getLocalTransitions()) {
+		for(const auto& target: transition.second) {
+			out.emplace_back("localTransition", sax::Token::TokenType::START_ELEMENT);
+
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+			automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, target);
+
+			out.emplace_back("localTransition", sax::Token::TokenType::END_ELEMENT);
+		}
+	}
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_VISIBLY_PUSHDOWN_NPDA_H_ */
diff --git a/alib2data/src/automaton/xml/TA/DFTA.cpp b/alib2data/src/automaton/xml/TA/DFTA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4139df7ab22d5682f66d94ff2727e81f33b67b33
--- /dev/null
+++ b/alib2data/src/automaton/xml/TA/DFTA.cpp
@@ -0,0 +1,22 @@
+/*
+ * DFTA.cpp
+ *
+ *  Created on: Apr 14, 2015
+ *      Author: Stepan Plachy
+ */
+
+#include "DFTA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::DFTA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::DFTA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::DFTA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::DFTA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/TA/DFTA.h b/alib2data/src/automaton/xml/TA/DFTA.h
new file mode 100644
index 0000000000000000000000000000000000000000..46e60daa8b8f2484618e6b3dbce14f648ffaaad9
--- /dev/null
+++ b/alib2data/src/automaton/xml/TA/DFTA.h
@@ -0,0 +1,143 @@
+/*
+ * DFTA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Apr 14, 2015
+ *      Author: Stepan Plachy
+ */
+
+#ifndef _XML_DFTA_H_
+#define _XML_DFTA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/TA/DFTA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType, class StateType >
+struct xmlApi < automaton::DFTA < SymbolType, RankType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "DFTA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::DFTA < SymbolType, RankType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::DFTA < SymbolType, RankType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::DFTA < SymbolType, RankType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::DFTA < SymbolType, RankType, StateType > & automaton );
+};
+
+template<class SymbolType, class RankType, class StateType >
+automaton::DFTA < SymbolType, RankType, StateType > xmlApi < automaton::DFTA < SymbolType, RankType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<common::ranked_symbol < SymbolType, RankType >> inputSymbols = automaton::AutomatonFromXMLParser::parseRankedInputAlphabet<common::ranked_symbol < SymbolType, RankType >>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::DFTA < SymbolType, RankType, StateType > automaton;
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template<class SymbolType, class RankType, class StateType >
+void xmlApi < automaton::DFTA < SymbolType, RankType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::DFTA < SymbolType, RankType, StateType > & automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	common::ranked_symbol < SymbolType, RankType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol<common::ranked_symbol < SymbolType, RankType >>(input);
+	ext::vector<StateType> from = automaton::AutomatonFromXMLParser::parseTransitionFromMultiple<StateType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(inputSymbol), std::move(from), std::move(to));
+}
+
+template<class SymbolType, class RankType, class StateType >
+void xmlApi < automaton::DFTA < SymbolType, RankType, StateType > >::compose(ext::deque<sax::Token>& out, const automaton::DFTA < SymbolType, RankType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeRankedInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions(out, automaton);
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template<class SymbolType, class RankType, class StateType >
+void xmlApi < automaton::DFTA < SymbolType, RankType, StateType > >::composeTransitions(ext::deque<sax::Token>& out, const automaton::DFTA < SymbolType, RankType, StateType > & automaton ) {
+	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::START_ELEMENT));
+	for(const auto& transition : automaton.getTransitions()) {
+		out.emplace_back(sax::Token("transition", sax::Token::TokenType::START_ELEMENT));
+
+		automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.first);
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.second);
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, transition.second);
+
+		out.emplace_back(sax::Token("transition", sax::Token::TokenType::END_ELEMENT));
+	}
+
+	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::END_ELEMENT));
+}
+
+} /* namespace core */
+
+#endif /* _XML_DFTA_H_ */
diff --git a/alib2data/src/automaton/xml/TA/NFTA.cpp b/alib2data/src/automaton/xml/TA/NFTA.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f85fdf047937ab143d21a54dd26a80a3b9584aa9
--- /dev/null
+++ b/alib2data/src/automaton/xml/TA/NFTA.cpp
@@ -0,0 +1,22 @@
+/*
+ * NFTA.cpp
+ *
+ *  Created on: Mar 21, 2015
+ *      Author: Stepan Plachy
+ */
+
+#include "NFTA.h"
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::NFTA < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::NFTA < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::NFTA < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::NFTA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/TA/NFTA.h b/alib2data/src/automaton/xml/TA/NFTA.h
new file mode 100644
index 0000000000000000000000000000000000000000..4166d3aa05bfcacfd0544c98a687e7b7c784db6e
--- /dev/null
+++ b/alib2data/src/automaton/xml/TA/NFTA.h
@@ -0,0 +1,145 @@
+/*
+ * NFTA.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Mar 21, 2015
+ *      Author: Stepan Plachy
+ */
+
+#ifndef _XML_NFTA_H_
+#define _XML_NFTA_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/TA/NFTA.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class RankType, class StateType >
+struct xmlApi < automaton::NFTA < SymbolType, RankType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "NFTA";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::NFTA < SymbolType, RankType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::NFTA < SymbolType, RankType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::NFTA < SymbolType, RankType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::NFTA < SymbolType, RankType, StateType > & automaton );
+};
+
+template < class SymbolType, class RankType, class StateType >
+automaton::NFTA < SymbolType, RankType, StateType > xmlApi < automaton::NFTA < SymbolType, RankType, StateType > >::parse(ext::deque<sax::Token>::iterator& input) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<common::ranked_symbol < SymbolType, RankType >> inputSymbols = automaton::AutomatonFromXMLParser::parseRankedInputAlphabet<common::ranked_symbol < SymbolType, RankType >>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::NFTA < SymbolType, RankType, StateType > automaton;
+	automaton.setStates(std::move(states));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template < class SymbolType, class RankType, class StateType >
+void xmlApi < automaton::NFTA < SymbolType, RankType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::NFTA < SymbolType, RankType, StateType > & automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	common::ranked_symbol < SymbolType, RankType > inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol<common::ranked_symbol < SymbolType, RankType >>(input);
+	ext::vector<StateType> from = automaton::AutomatonFromXMLParser::parseTransitionFromMultiple<StateType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(inputSymbol), std::move(from), std::move(to));
+}
+
+template < class SymbolType, class RankType, class StateType >
+void xmlApi < automaton::NFTA < SymbolType, RankType, StateType > >::compose(ext::deque<sax::Token>& out, const automaton::NFTA < SymbolType, RankType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeRankedInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions(out, automaton);
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template < class SymbolType, class RankType, class StateType >
+void xmlApi < automaton::NFTA < SymbolType, RankType, StateType > >::composeTransitions(ext::deque<sax::Token>& out, const automaton::NFTA < SymbolType, RankType, StateType > & automaton ) {
+	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::START_ELEMENT));
+	for(const auto& transition : automaton.getTransitions()) {
+		for(const auto& targetState: transition.second) {
+			out.emplace_back(sax::Token("transition", sax::Token::TokenType::START_ELEMENT));
+
+			automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.first);
+			automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.second);
+			automaton::AutomatonToXMLComposer::composeTransitionTo(out, targetState);
+
+			out.emplace_back(sax::Token("transition", sax::Token::TokenType::END_ELEMENT));
+		}
+	}
+
+	out.emplace_back(sax::Token("transitions", sax::Token::TokenType::END_ELEMENT));
+}
+
+} /* namespace core */
+
+#endif /* _XML_NFTA_H_ */
diff --git a/alib2data/src/automaton/xml/TM/OneTapeDTM.cpp b/alib2data/src/automaton/xml/TM/OneTapeDTM.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..662db3b034180182002d1670b7c7f433f4528249
--- /dev/null
+++ b/alib2data/src/automaton/xml/TM/OneTapeDTM.cpp
@@ -0,0 +1,23 @@
+/*
+ * OneTapeDTM.cpp
+ *
+ *  Created on: Apr 24, 2013
+ *      Author: Jan Travnicek
+ */
+
+#include "OneTapeDTM.h"
+
+#include <automaton/Automaton.h>
+#include <object/Object.h>
+
+#include <registration/XmlRegistration.hpp>
+
+namespace {
+
+static auto xmlWrite = registration::XmlWriterRegister < automaton::OneTapeDTM < > > ( );
+static auto xmlRead = registration::XmlReaderRegister < automaton::OneTapeDTM < > > ( );
+
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < automaton::Automaton, automaton::OneTapeDTM < > > ( );
+static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, automaton::OneTapeDTM < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/xml/TM/OneTapeDTM.h b/alib2data/src/automaton/xml/TM/OneTapeDTM.h
new file mode 100644
index 0000000000000000000000000000000000000000..c8fcff800ccdc0e0b5d48fccdd77dbd3e7921124
--- /dev/null
+++ b/alib2data/src/automaton/xml/TM/OneTapeDTM.h
@@ -0,0 +1,155 @@
+/*
+ * OneTapeDTM.h
+ *
+ * This file is part of Algorithms library toolkit.
+ * Copyright (C) 2017 Jan Travnicek (jan.travnicek@fit.cvut.cz)
+
+ * Algorithms library toolkit is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * Algorithms library toolkit is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with Algorithms library toolkit.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  Created on: Apr 24, 2013
+ *      Author: Martin Zak
+ *      Author: Jan Travnicek
+ */
+
+#ifndef _XML_ONE_TAPE_DTM_H_
+#define _XML_ONE_TAPE_DTM_H_
+
+#include <core/xmlApi.hpp>
+#include <automaton/TM/OneTapeDTM.h>
+#include "../common/AutomatonFromXMLParser.h"
+#include "../common/AutomatonToXMLComposer.h"
+
+namespace core {
+
+template < class SymbolType, class StateType >
+struct xmlApi < automaton::OneTapeDTM < SymbolType, StateType > > {
+	/**
+	 * \brief The XML tag name of class.
+	 *
+	 * \details Intentionaly a static member function to be safe in the initialisation before the main function starts.
+	 *
+	 * \returns string representing the XML tag name of the class
+	 */
+	static const std::string & xmlTagName() {
+		static std::string xmlTagName = "OneTapeDTM";
+
+		return xmlTagName;
+	}
+
+	/**
+	 * Parsing from a sequence of xml tokens helper.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 *
+	 * \returns the new instance of the automaton
+	 */
+	static automaton::OneTapeDTM < SymbolType, StateType > parse ( ext::deque < sax::Token >::iterator & input );
+
+	/**
+	 * Helper for parsing of individual transitions of the automaton from a sequence of xml tokens.
+	 *
+	 * \params input the iterator to sequence of xml tokens to parse from
+	 * \params automaton the automaton to add the rule to
+	 */
+	static void parseTransition ( ext::deque < sax::Token >::iterator & input, automaton::OneTapeDTM < SymbolType, StateType > & automaton );
+
+	/**
+	 * Composing to a sequence of xml tokens helper.
+	 *
+	 * \param out the sink for new xml tokens representing the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void compose ( ext::deque < sax::Token > & out, const automaton::OneTapeDTM < SymbolType, StateType > & automaton );
+
+	/**
+	 * Helper for composing transitions of the automaton to a sequence of xml tokens.
+	 *
+	 * \param out the sink for xml tokens representing the rules of the automaton
+	 * \param automaton the automaton to compose
+	 */
+	static void composeTransitions ( ext::deque < sax::Token > & out, const automaton::OneTapeDTM < SymbolType, StateType > & automaton );
+};
+
+template < class SymbolType, class StateType >
+automaton::OneTapeDTM < SymbolType, StateType > xmlApi < automaton::OneTapeDTM < SymbolType, StateType > >::parse ( ext::deque < sax::Token >::iterator & input ) {
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
+
+	ext::set<StateType> states = automaton::AutomatonFromXMLParser::parseStates<StateType>(input);
+	ext::set<SymbolType> tapeSymbols = automaton::AutomatonFromXMLParser::parseTapeAlphabet<SymbolType>(input);
+	ext::set<SymbolType> inputSymbols = automaton::AutomatonFromXMLParser::parseInputAlphabet<SymbolType>(input);
+	SymbolType blank = automaton::AutomatonFromXMLParser::parseBlankSymbol<SymbolType>(input);
+	StateType initialState = automaton::AutomatonFromXMLParser::parseInitialState<StateType>(input);
+	ext::set<StateType> finalStates = automaton::AutomatonFromXMLParser::parseFinalStates<StateType>(input);
+
+	automaton::OneTapeDTM < SymbolType, StateType > automaton(std::move(initialState), std::move(blank));
+	automaton.setStates(std::move(states));
+	automaton.setTapeAlphabet(std::move(tapeSymbols));
+	automaton.setInputAlphabet(std::move(inputSymbols));
+	automaton.setFinalStates(std::move(finalStates));
+
+	automaton::AutomatonFromXMLParser::parseTransitions ( input, automaton );
+
+	sax::FromXMLParserHelper::popToken ( input, sax::Token::TokenType::END_ELEMENT, xmlTagName ( ) );
+	return automaton;
+}
+
+template<class SymbolType, class StateType >
+void xmlApi < automaton::OneTapeDTM < SymbolType, StateType > >::parseTransition(ext::deque<sax::Token>::iterator& input, automaton::OneTapeDTM<SymbolType, StateType>& automaton) {
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition");
+	StateType from = automaton::AutomatonFromXMLParser::parseTransitionFrom<StateType>(input);
+	SymbolType inputSymbol = automaton::AutomatonFromXMLParser::parseTransitionInputSymbol<SymbolType>(input);
+	StateType to = automaton::AutomatonFromXMLParser::parseTransitionTo<StateType>(input);
+	SymbolType outputSymbol = automaton::AutomatonFromXMLParser::parseTransitionOutputSymbol<SymbolType>(input);
+	automaton::Shift shift = automaton::AutomatonFromXMLParser::parseTransitionShift(input);
+	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition");
+
+	automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(to), std::move(outputSymbol), shift);
+}
+
+template<class SymbolType, class StateType >
+void xmlApi < automaton::OneTapeDTM < SymbolType, StateType > >::compose(ext::deque<sax::Token>& out, const automaton::OneTapeDTM < SymbolType, StateType > & automaton ) {
+	out.emplace_back ( xmlTagName(), sax::Token::TokenType::START_ELEMENT );
+
+	automaton::AutomatonToXMLComposer::composeStates(out, automaton.getStates());
+	automaton::AutomatonToXMLComposer::composeTapeAlphabet(out, automaton.getTapeAlphabet());
+	automaton::AutomatonToXMLComposer::composeInputAlphabet(out, automaton.getInputAlphabet());
+	automaton::AutomatonToXMLComposer::composeBlankSymbol(out, automaton.getBlankSymbol());
+	automaton::AutomatonToXMLComposer::composeInitialState(out, automaton.getInitialState());
+	automaton::AutomatonToXMLComposer::composeFinalStates(out, automaton.getFinalStates());
+	composeTransitions(out, automaton);
+
+	out.emplace_back ( xmlTagName ( ), sax::Token::TokenType::END_ELEMENT );
+}
+
+template<class SymbolType, class StateType >
+void xmlApi < automaton::OneTapeDTM < SymbolType, StateType > >::composeTransitions(ext::deque<sax::Token>& out, const automaton::OneTapeDTM < SymbolType, StateType > & automaton ) {
+	out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT);
+	for(const auto& transition : automaton.getTransitions()) {
+		out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT);
+
+		automaton::AutomatonToXMLComposer::composeTransitionFrom(out, transition.first.first);
+		automaton::AutomatonToXMLComposer::composeTransitionInputSymbol(out, transition.first.second);
+		automaton::AutomatonToXMLComposer::composeTransitionTo(out, std::get<0>(transition.second));
+		automaton::AutomatonToXMLComposer::composeTransitionOutputSymbol(out, std::get<1>(transition.second));
+		automaton::AutomatonToXMLComposer::composeTransitionShift(out, std::get<2>(transition.second));
+
+		out.emplace_back("transition", sax::Token::TokenType::END_ELEMENT);
+	}
+
+	out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT);
+}
+
+} /* namespace core */
+
+#endif /* _XML_ONE_TAPE_DTM_H_ */
diff --git a/alib2data/src/automaton/common/AutomatonFromXMLParser.h b/alib2data/src/automaton/xml/common/AutomatonFromXMLParser.h
similarity index 99%
rename from alib2data/src/automaton/common/AutomatonFromXMLParser.h
rename to alib2data/src/automaton/xml/common/AutomatonFromXMLParser.h
index 8198824f4398b9e9534f74464025427a8e30d6ec..c1fba083b95c3e3caf0886e31f74a448c0511092 100644
--- a/alib2data/src/automaton/common/AutomatonFromXMLParser.h
+++ b/alib2data/src/automaton/xml/common/AutomatonFromXMLParser.h
@@ -8,6 +8,7 @@
 #ifndef AUTOMATON_FROM_XML_PARSER_H_
 #define AUTOMATON_FROM_XML_PARSER_H_
 
+#include <alib/deque>
 #include <alib/set>
 #include <alib/vector>
 #include <alib/variant>
@@ -17,9 +18,9 @@
 #include <sax/ParserException.h>
 #include <core/xmlApi.hpp>
 
-#include "../../regexp/unbounded/UnboundedRegExpStructure.h"
-#include <alphabet/RankedSymbol.h>
-#include "Shift.h"
+#include <regexp/xml/UnboundedRegExpStructure.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include <automaton/common/Shift.h>
 
 namespace automaton {
 
@@ -123,7 +124,7 @@ template<class T>
 void AutomatonFromXMLParser::parseTransitions(ext::deque<sax::Token>::iterator& input, T& automaton) {
 	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transitions");
 	while (sax::FromXMLParserHelper::isTokenType(input, sax::Token::TokenType::START_ELEMENT)) {
-		T::parseTransition(input, automaton);
+		core::xmlApi < T >::parseTransition(input, automaton);
 	}
 	sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transitions");
 }
diff --git a/alib2data/src/automaton/common/AutomatonToXMLComposer.h b/alib2data/src/automaton/xml/common/AutomatonToXMLComposer.h
similarity index 99%
rename from alib2data/src/automaton/common/AutomatonToXMLComposer.h
rename to alib2data/src/automaton/xml/common/AutomatonToXMLComposer.h
index e02be6ecb1b327f67dd4185dfa1c2397496a80a8..9f18dfc8e43c787065bf330f196e3127a8639e82 100644
--- a/alib2data/src/automaton/common/AutomatonToXMLComposer.h
+++ b/alib2data/src/automaton/xml/common/AutomatonToXMLComposer.h
@@ -14,12 +14,11 @@
 #include <alib/variant>
 #include <alib/map>
 
-#include <sax/Token.h>
 #include <core/xmlApi.hpp>
 
-#include "Shift.h"
-#include "../../regexp/unbounded/UnboundedRegExpStructure.h"
-#include <alphabet/RankedSymbol.h>
+#include <regexp/xml/UnboundedRegExpStructure.h>
+#include <alphabet/xml/RankedSymbol.h>
+#include <automaton/common/Shift.h>
 
 namespace automaton {
 
diff --git a/alib2data/src/indexes/stringology/FactorOracleAutomaton.h b/alib2data/src/indexes/stringology/FactorOracleAutomaton.h
index 0f1956f1582010e009a855cc6eece4cc5b0edbac..d14f37f7e379a0037217ffbdd87d6e4163b0e5a1 100644
--- a/alib2data/src/indexes/stringology/FactorOracleAutomaton.h
+++ b/alib2data/src/indexes/stringology/FactorOracleAutomaton.h
@@ -42,6 +42,7 @@
 #include <alphabet/common/SymbolNormalize.h>
 
 #include <automaton/FSM/DFA.h>
+#include <automaton/xml/FSM/DFA.h>
 
 namespace indexes {
 
diff --git a/alib2data/src/indexes/stringology/SuffixAutomaton.h b/alib2data/src/indexes/stringology/SuffixAutomaton.h
index 8cab4afabb87d5489fd911c02c94a39984c69c3d..dc9aaa4534fc41311c736812d78a741ab9dcd291 100644
--- a/alib2data/src/indexes/stringology/SuffixAutomaton.h
+++ b/alib2data/src/indexes/stringology/SuffixAutomaton.h
@@ -42,6 +42,7 @@
 #include <alphabet/common/SymbolNormalize.h>
 
 #include <automaton/FSM/DFA.h>
+#include <automaton/xml/FSM/DFA.h>
 
 namespace indexes {
 
diff --git a/alib2data/test-src/automaton/AutomatonTemplatesTest.cpp b/alib2data/test-src/automaton/AutomatonTemplatesTest.cpp
index d047f916cde2e19697631bc41c293080624a7482..faf2202361b513a2bb77451305bd6c6c40ef714a 100644
--- a/alib2data/test-src/automaton/AutomatonTemplatesTest.cpp
+++ b/alib2data/test-src/automaton/AutomatonTemplatesTest.cpp
@@ -4,6 +4,7 @@
 #include "sax/SaxComposeInterface.h"
 
 #include "automaton/FSM/DFA.h"
+#include "automaton/xml/FSM/DFA.h"
 
 #include "automaton/AutomatonException.h"
 
diff --git a/alib2data/test-src/automaton/AutomatonTest.cpp b/alib2data/test-src/automaton/AutomatonTest.cpp
index 74a0eb1c799a68ca998db69cde3972ada92fe477..d15c2219e23f441836dc15c1285d76206c84f261 100644
--- a/alib2data/test-src/automaton/AutomatonTest.cpp
+++ b/alib2data/test-src/automaton/AutomatonTest.cpp
@@ -7,12 +7,19 @@
 #include "sax/SaxComposeInterface.h"
 
 #include "automaton/FSM/DFA.h"
+#include "automaton/xml/FSM/DFA.h"
 #include "automaton/FSM/ExtendedNFA.h"
+#include "automaton/xml/FSM/ExtendedNFA.h"
 #include "automaton/PDA/SinglePopDPDA.h"
+#include "automaton/xml/PDA/SinglePopDPDA.h"
 #include "automaton/PDA/DPDA.h"
+#include "automaton/xml/PDA/DPDA.h"
 #include "automaton/PDA/NPDA.h"
+#include "automaton/xml/PDA/NPDA.h"
 #include "automaton/PDA/RealTimeHeightDeterministicNPDA.h"
+#include "automaton/xml/PDA/RealTimeHeightDeterministicNPDA.h"
 #include "automaton/TA/NFTA.h"
+#include "automaton/xml/TA/NFTA.h"
 
 #include "automaton/AutomatonException.h"