diff --git a/aconvert2/src/DotConverter.cpp b/aconvert2/src/DotConverter.cpp
index 2faad1a1c8d9f08d3b91fa08db3b1df6d210fba3..d3d10c0904969e453db06cf96260b6241a8dcc88 100644
--- a/aconvert2/src/DotConverter.cpp
+++ b/aconvert2/src/DotConverter.cpp
@@ -82,7 +82,7 @@ void DotConverter::convert(std::ostream& out, const automaton::EpsilonNFA& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::EpsilonNFA> DotConverterEpsilonNFA = DotConverter::RegistratorWrapper<void, automaton::EpsilonNFA>(DotConverter::convert);
+auto DotConverterEpsilonNFA = DotConverter::RegistratorWrapper<void, automaton::EpsilonNFA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::MultiInitialStateNFA& a) {
 	out << "digraph automaton {\n";
@@ -117,7 +117,7 @@ void DotConverter::convert(std::ostream& out, const automaton::MultiInitialState
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::MultiInitialStateNFA> DotConverterMultiInitialStateNFA = DotConverter::RegistratorWrapper<void, automaton::MultiInitialStateNFA>(DotConverter::convert);
+auto DotConverterMultiInitialStateNFA = DotConverter::RegistratorWrapper<void, automaton::MultiInitialStateNFA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::NFA& a) {
 	out << "digraph automaton {\n";
@@ -150,7 +150,7 @@ void DotConverter::convert(std::ostream& out, const automaton::NFA& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::NFA> DotConverterNFA = DotConverter::RegistratorWrapper<void, automaton::NFA>(DotConverter::convert);
+auto DotConverterNFA = DotConverter::RegistratorWrapper<void, automaton::NFA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::DFA& a) {
 	out << "digraph automaton {\n";
@@ -183,7 +183,7 @@ void DotConverter::convert(std::ostream& out, const automaton::DFA& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::DFA> DotConverterDFA = DotConverter::RegistratorWrapper<void, automaton::DFA>(DotConverter::convert);
+auto DotConverterDFA = DotConverter::RegistratorWrapper<void, automaton::DFA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::ExtendedNFA& a) {
 	out << "digraph automaton {\n";
@@ -216,7 +216,7 @@ void DotConverter::convert(std::ostream& out, const automaton::ExtendedNFA& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::ExtendedNFA> DotConverterExtendedNFA = DotConverter::RegistratorWrapper<void, automaton::ExtendedNFA>(DotConverter::convert);
+auto DotConverterExtendedNFA = DotConverter::RegistratorWrapper<void, automaton::ExtendedNFA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::CompactNFA& a) {
 	out << "digraph automaton {\n";
@@ -249,7 +249,7 @@ void DotConverter::convert(std::ostream& out, const automaton::CompactNFA& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::CompactNFA> DotConverterCompactNFA = DotConverter::RegistratorWrapper<void, automaton::CompactNFA>(DotConverter::convert);
+auto DotConverterCompactNFA = DotConverter::RegistratorWrapper<void, automaton::CompactNFA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::NFTA& a) {
 	out << "digraph automaton {\n";
@@ -278,7 +278,7 @@ void DotConverter::convert(std::ostream& out, const automaton::NFTA& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::NFTA> DotConverterNFTA = DotConverter::RegistratorWrapper<void, automaton::NFTA>(DotConverter::convert);
+auto DotConverterNFTA = DotConverter::RegistratorWrapper<void, automaton::NFTA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::DFTA& a) {
 	out << "digraph automaton {\n";
@@ -307,7 +307,7 @@ void DotConverter::convert(std::ostream& out, const automaton::DFTA& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::DFTA> DotConverterDFTA = DotConverter::RegistratorWrapper<void, automaton::DFTA>(DotConverter::convert);
+auto DotConverterDFTA = DotConverter::RegistratorWrapper<void, automaton::DFTA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::DPDA& a) {
 	out << "digraph automaton {\n";
@@ -340,7 +340,7 @@ void DotConverter::convert(std::ostream& out, const automaton::DPDA& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::DPDA> DotConverterDPDA = DotConverter::RegistratorWrapper<void, automaton::DPDA>(DotConverter::convert);
+auto DotConverterDPDA = DotConverter::RegistratorWrapper<void, automaton::DPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::SinglePopDPDA& a) {
 	out << "digraph automaton {\n";
@@ -373,7 +373,7 @@ void DotConverter::convert(std::ostream& out, const automaton::SinglePopDPDA& a)
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::SinglePopDPDA> DotConverterSinglePopDPDA = DotConverter::RegistratorWrapper<void, automaton::SinglePopDPDA>(DotConverter::convert);
+auto DotConverterSinglePopDPDA = DotConverter::RegistratorWrapper<void, automaton::SinglePopDPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::InputDrivenDPDA& a) {
 	out << "digraph automaton {\n";
@@ -406,7 +406,7 @@ void DotConverter::convert(std::ostream& out, const automaton::InputDrivenDPDA&
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::InputDrivenDPDA> DotConverterInputDrivenDPDA = DotConverter::RegistratorWrapper<void, automaton::InputDrivenDPDA>(DotConverter::convert);
+auto DotConverterInputDrivenDPDA = DotConverter::RegistratorWrapper<void, automaton::InputDrivenDPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::InputDrivenNPDA& a) {
 	out << "digraph automaton {\n";
@@ -439,7 +439,7 @@ void DotConverter::convert(std::ostream& out, const automaton::InputDrivenNPDA&
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::InputDrivenNPDA> DotConverterInputDrivenNPDA = DotConverter::RegistratorWrapper<void, automaton::InputDrivenNPDA>(DotConverter::convert);
+auto DotConverterInputDrivenNPDA = DotConverter::RegistratorWrapper<void, automaton::InputDrivenNPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::VisiblyPushdownDPDA& a) {
 	out << "digraph automaton {\n";
@@ -472,7 +472,7 @@ void DotConverter::convert(std::ostream& out, const automaton::VisiblyPushdownDP
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::VisiblyPushdownDPDA> DotConverterVisiblyPushdownDPDA = DotConverter::RegistratorWrapper<void, automaton::VisiblyPushdownDPDA>(DotConverter::convert);
+auto DotConverterVisiblyPushdownDPDA = DotConverter::RegistratorWrapper<void, automaton::VisiblyPushdownDPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::VisiblyPushdownNPDA& a) {
 	out << "digraph automaton {\n";
@@ -507,7 +507,7 @@ void DotConverter::convert(std::ostream& out, const automaton::VisiblyPushdownNP
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::VisiblyPushdownNPDA> DotConverterVisiblyPushdownNPDA = DotConverter::RegistratorWrapper<void, automaton::VisiblyPushdownNPDA>(DotConverter::convert);
+auto DotConverterVisiblyPushdownNPDA = DotConverter::RegistratorWrapper<void, automaton::VisiblyPushdownNPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::RealTimeHeightDeterministicDPDA& a) {
 	out << "digraph automaton {\n";
@@ -540,7 +540,7 @@ void DotConverter::convert(std::ostream& out, const automaton::RealTimeHeightDet
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicDPDA> DotConverterRealTimeHeightDeterministicDPDA = DotConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicDPDA>(DotConverter::convert);
+auto DotConverterRealTimeHeightDeterministicDPDA = DotConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicDPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::RealTimeHeightDeterministicNPDA& a) {
 	out << "digraph automaton {\n";
@@ -575,7 +575,7 @@ void DotConverter::convert(std::ostream& out, const automaton::RealTimeHeightDet
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicNPDA> DotConverterRealTimeHeightDeterministicNPDA = DotConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicNPDA>(DotConverter::convert);
+auto DotConverterRealTimeHeightDeterministicNPDA = DotConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicNPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::NPDA& a) {
 	out << "digraph automaton {\n";
@@ -608,7 +608,7 @@ void DotConverter::convert(std::ostream& out, const automaton::NPDA& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::NPDA> DotConverterNPDA = DotConverter::RegistratorWrapper<void, automaton::NPDA>(DotConverter::convert);
+auto DotConverterNPDA = DotConverter::RegistratorWrapper<void, automaton::NPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::SinglePopNPDA& a) {
 	out << "digraph automaton {\n";
@@ -641,7 +641,7 @@ void DotConverter::convert(std::ostream& out, const automaton::SinglePopNPDA& a)
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::SinglePopNPDA> DotConverterSinglePopNPDA = DotConverter::RegistratorWrapper<void, automaton::SinglePopNPDA>(DotConverter::convert);
+auto DotConverterSinglePopNPDA = DotConverter::RegistratorWrapper<void, automaton::SinglePopNPDA>(DotConverter::convert);
 
 void DotConverter::convert(std::ostream& out, const automaton::OneTapeDTM& a) {
 	out << "digraph automaton {\n";
@@ -674,7 +674,7 @@ void DotConverter::convert(std::ostream& out, const automaton::OneTapeDTM& a) {
 	out << "}";
 }
 
-DotConverter::RegistratorWrapper<void, automaton::OneTapeDTM> DotConverterOneTapeDTM = DotConverter::RegistratorWrapper<void, automaton::OneTapeDTM>(DotConverter::convert);
+auto DotConverterOneTapeDTM = DotConverter::RegistratorWrapper<void, automaton::OneTapeDTM>(DotConverter::convert);
 
 void DotConverter::transitions(const automaton::EpsilonNFA& fsm, const std::map<automaton::State, int>& states, std::ostream& out) {
 	std::map<std::pair<int, int>, std::string> transitions;
diff --git a/aconvert2/src/GasTexConverter.cpp b/aconvert2/src/GasTexConverter.cpp
index 3b4ae3de9ab095e9b14a710d4092fd85e3a98fc2..28657c755e07416d32dbaa862777fc97e14ffba2 100644
--- a/aconvert2/src/GasTexConverter.cpp
+++ b/aconvert2/src/GasTexConverter.cpp
@@ -77,7 +77,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::EpsilonNFA& a)
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::EpsilonNFA> GasTexConverterEpsilonNFA = GasTexConverter::RegistratorWrapper<void, automaton::EpsilonNFA>(GasTexConverter::convert);
+auto GasTexConverterEpsilonNFA = GasTexConverter::RegistratorWrapper<void, automaton::EpsilonNFA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::MultiInitialStateNFA& a) {
 	out << "\\begin{center}\n";
@@ -118,7 +118,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::MultiInitialSt
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::MultiInitialStateNFA> GasTexConverterMultiInitialStateNFA = GasTexConverter::RegistratorWrapper<void, automaton::MultiInitialStateNFA>(GasTexConverter::convert);
+auto GasTexConverterMultiInitialStateNFA = GasTexConverter::RegistratorWrapper<void, automaton::MultiInitialStateNFA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::NFA& a) {
 	out << "\\begin{center}\n";
@@ -159,7 +159,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::NFA& a) {
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::NFA> GasTexConverterNFA = GasTexConverter::RegistratorWrapper<void, automaton::NFA>(GasTexConverter::convert);
+auto GasTexConverterNFA = GasTexConverter::RegistratorWrapper<void, automaton::NFA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::DFA& a) {
 	out << "\\begin{center}\n";
@@ -200,7 +200,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::DFA& a) {
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::DFA> GasTexConverterDFA = GasTexConverter::RegistratorWrapper<void, automaton::DFA>(GasTexConverter::convert);
+auto GasTexConverterDFA = GasTexConverter::RegistratorWrapper<void, automaton::DFA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::ExtendedNFA& a) {
 	out << "\\begin{center}\n";
@@ -241,7 +241,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::ExtendedNFA& a
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::ExtendedNFA> GasTexConverterExtendedNFA = GasTexConverter::RegistratorWrapper<void, automaton::ExtendedNFA>(GasTexConverter::convert);
+auto GasTexConverterExtendedNFA = GasTexConverter::RegistratorWrapper<void, automaton::ExtendedNFA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::CompactNFA& a) {
 	out << "\\begin{center}\n";
@@ -282,19 +282,19 @@ void GasTexConverter::convert(std::ostream& out, const automaton::CompactNFA& a)
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::CompactNFA> GasTexConverterCompactNFA = GasTexConverter::RegistratorWrapper<void, automaton::CompactNFA>(GasTexConverter::convert);
+auto GasTexConverterCompactNFA = GasTexConverter::RegistratorWrapper<void, automaton::CompactNFA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream&, const automaton::NFTA&) {
 	//TODO
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::NFTA> GasTexConverterNFTA = GasTexConverter::RegistratorWrapper<void, automaton::NFTA>(GasTexConverter::convert);
+auto GasTexConverterNFTA = GasTexConverter::RegistratorWrapper<void, automaton::NFTA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream&, const automaton::DFTA&) {
 	//TODO
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::DFTA> GasTexConverterDFTA = GasTexConverter::RegistratorWrapper<void, automaton::DFTA>(GasTexConverter::convert);
+auto GasTexConverterDFTA = GasTexConverter::RegistratorWrapper<void, automaton::DFTA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::DPDA& a) {
 	out << "\\begin{center}\n";
@@ -335,7 +335,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::DPDA& a) {
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::DPDA> GasTexConverterDPDA = GasTexConverter::RegistratorWrapper<void, automaton::DPDA>(GasTexConverter::convert);
+auto GasTexConverterDPDA = GasTexConverter::RegistratorWrapper<void, automaton::DPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::SinglePopDPDA& a) {
 	out << "\\begin{center}\n";
@@ -376,7 +376,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::SinglePopDPDA&
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::SinglePopDPDA> GasTexConverterSinglePopDPDA = GasTexConverter::RegistratorWrapper<void, automaton::SinglePopDPDA>(GasTexConverter::convert);
+auto GasTexConverterSinglePopDPDA = GasTexConverter::RegistratorWrapper<void, automaton::SinglePopDPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::InputDrivenDPDA& a) {
 	out << "\\begin{center}\n";
@@ -417,7 +417,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::InputDrivenDPD
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::InputDrivenDPDA> GasTexConverterInputDrivenDPDA = GasTexConverter::RegistratorWrapper<void, automaton::InputDrivenDPDA>(GasTexConverter::convert);
+auto GasTexConverterInputDrivenDPDA = GasTexConverter::RegistratorWrapper<void, automaton::InputDrivenDPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::InputDrivenNPDA& a) {
 	out << "\\begin{center}\n";
@@ -458,7 +458,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::InputDrivenNPD
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::InputDrivenNPDA> GasTexConverterInputDrivenNPDA = GasTexConverter::RegistratorWrapper<void, automaton::InputDrivenNPDA>(GasTexConverter::convert);
+auto GasTexConverterInputDrivenNPDA = GasTexConverter::RegistratorWrapper<void, automaton::InputDrivenNPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::VisiblyPushdownDPDA& a) {
 	out << "\\begin{center}\n";
@@ -499,7 +499,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::VisiblyPushdow
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::VisiblyPushdownDPDA> GasTexConverterVisiblyPushdownDPDA = GasTexConverter::RegistratorWrapper<void, automaton::VisiblyPushdownDPDA>(GasTexConverter::convert);
+auto GasTexConverterVisiblyPushdownDPDA = GasTexConverter::RegistratorWrapper<void, automaton::VisiblyPushdownDPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::VisiblyPushdownNPDA& a) {
 	out << "\\begin{center}\n";
@@ -540,7 +540,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::VisiblyPushdow
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::VisiblyPushdownNPDA> GasTexConverterVisiblyPushdownNPDA = GasTexConverter::RegistratorWrapper<void, automaton::VisiblyPushdownNPDA>(GasTexConverter::convert);
+auto GasTexConverterVisiblyPushdownNPDA = GasTexConverter::RegistratorWrapper<void, automaton::VisiblyPushdownNPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::RealTimeHeightDeterministicDPDA& a) {
 	out << "\\begin{center}\n";
@@ -581,7 +581,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::RealTimeHeight
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicDPDA> GasTexConverterRealTimeHeightDeterministicDPDA = GasTexConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicDPDA>(GasTexConverter::convert);
+auto GasTexConverterRealTimeHeightDeterministicDPDA = GasTexConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicDPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::RealTimeHeightDeterministicNPDA& a) {
 	out << "\\begin{center}\n";
@@ -622,7 +622,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::RealTimeHeight
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicNPDA> GasTexConverterRealTimeHeightDeterministicNPDA = GasTexConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicNPDA>(GasTexConverter::convert);
+auto GasTexConverterRealTimeHeightDeterministicNPDA = GasTexConverter::RegistratorWrapper<void, automaton::RealTimeHeightDeterministicNPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::NPDA& a) {
 	out << "\\begin{center}\n";
@@ -663,7 +663,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::NPDA& a) {
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::NPDA> GasTexConverterNPDA = GasTexConverter::RegistratorWrapper<void, automaton::NPDA>(GasTexConverter::convert);
+auto GasTexConverterNPDA = GasTexConverter::RegistratorWrapper<void, automaton::NPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::SinglePopNPDA& a) {
 	out << "\\begin{center}\n";
@@ -704,7 +704,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::SinglePopNPDA&
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::SinglePopNPDA> GasTexConverterSinglePopNPDA = GasTexConverter::RegistratorWrapper<void, automaton::SinglePopNPDA>(GasTexConverter::convert);
+auto GasTexConverterSinglePopNPDA = GasTexConverter::RegistratorWrapper<void, automaton::SinglePopNPDA>(GasTexConverter::convert);
 
 void GasTexConverter::convert(std::ostream& out, const automaton::OneTapeDTM& a) {
 	out << "\\begin{center}\n";
@@ -745,7 +745,7 @@ void GasTexConverter::convert(std::ostream& out, const automaton::OneTapeDTM& a)
 	out << "\\end{picture}\n";
 }
 
-GasTexConverter::RegistratorWrapper<void, automaton::OneTapeDTM> GasTexConverterOneTapeDTM = GasTexConverter::RegistratorWrapper<void, automaton::OneTapeDTM>(GasTexConverter::convert);
+auto GasTexConverterOneTapeDTM = GasTexConverter::RegistratorWrapper<void, automaton::OneTapeDTM>(GasTexConverter::convert);
 
 std::string GasTexConverter::getStackSymbols(const std::vector<alphabet::Symbol>& stackSymbols) {
 	if (stackSymbols.size() == 0) {
diff --git a/aconvert2/src/TikZConverter.cpp b/aconvert2/src/TikZConverter.cpp
index 3719517579792dc13121c22f1414db858c5c1401..eaf4db84a541d20d09703434e051b5b54efbc6a5 100644
--- a/aconvert2/src/TikZConverter.cpp
+++ b/aconvert2/src/TikZConverter.cpp
@@ -79,7 +79,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::EpsilonNFA &
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::EpsilonNFA > TikZConverterEpsilonNFA = TikZConverter::RegistratorWrapper < void, automaton::EpsilonNFA > ( TikZConverter::convert );
+auto TikZConverterEpsilonNFA = TikZConverter::RegistratorWrapper < void, automaton::EpsilonNFA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::MultiInitialStateNFA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -108,7 +108,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::MultiInitialS
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::MultiInitialStateNFA > TikZConverterMultiInitialStateNFA = TikZConverter::RegistratorWrapper < void, automaton::MultiInitialStateNFA > ( TikZConverter::convert );
+auto TikZConverterMultiInitialStateNFA = TikZConverter::RegistratorWrapper < void, automaton::MultiInitialStateNFA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::NFA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -137,7 +137,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::NFA & a ) {
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::NFA > TikZConverterNFA = TikZConverter::RegistratorWrapper < void, automaton::NFA > ( TikZConverter::convert );
+auto TikZConverterNFA = TikZConverter::RegistratorWrapper < void, automaton::NFA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::DFA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -166,7 +166,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::DFA & a ) {
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::DFA > TikZConverterDFA = TikZConverter::RegistratorWrapper < void, automaton::DFA > ( TikZConverter::convert );
+auto TikZConverterDFA = TikZConverter::RegistratorWrapper < void, automaton::DFA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::ExtendedNFA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -195,7 +195,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::ExtendedNFA &
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::ExtendedNFA > TikZConverterExtendedNFA = TikZConverter::RegistratorWrapper < void, automaton::ExtendedNFA > ( TikZConverter::convert );
+auto TikZConverterExtendedNFA = TikZConverter::RegistratorWrapper < void, automaton::ExtendedNFA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::CompactNFA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -224,7 +224,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::CompactNFA &
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::CompactNFA > TikZConverterCompactNFA = TikZConverter::RegistratorWrapper < void, automaton::CompactNFA > ( TikZConverter::convert );
+auto TikZConverterCompactNFA = TikZConverter::RegistratorWrapper < void, automaton::CompactNFA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::NFTA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -250,7 +250,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::NFTA & a ) {
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::NFTA > TikZConverterNFTA = TikZConverter::RegistratorWrapper < void, automaton::NFTA > ( TikZConverter::convert );
+auto TikZConverterNFTA = TikZConverter::RegistratorWrapper < void, automaton::NFTA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::DFTA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -276,7 +276,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::DFTA & a ) {
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::DFTA > TikZConverterDFTA = TikZConverter::RegistratorWrapper < void, automaton::DFTA > ( TikZConverter::convert );
+auto TikZConverterDFTA = TikZConverter::RegistratorWrapper < void, automaton::DFTA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::DPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -305,7 +305,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::DPDA & a ) {
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::DPDA > TikZConverterDPDA = TikZConverter::RegistratorWrapper < void, automaton::DPDA > ( TikZConverter::convert );
+auto TikZConverterDPDA = TikZConverter::RegistratorWrapper < void, automaton::DPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::SinglePopDPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -334,7 +334,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::SinglePopDPDA
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::SinglePopDPDA > TikZConverterSinglePopDPDA = TikZConverter::RegistratorWrapper < void, automaton::SinglePopDPDA > ( TikZConverter::convert );
+auto TikZConverterSinglePopDPDA = TikZConverter::RegistratorWrapper < void, automaton::SinglePopDPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::InputDrivenDPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -363,7 +363,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::InputDrivenDP
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::InputDrivenDPDA > TikZConverterInputDrivenDPDA = TikZConverter::RegistratorWrapper < void, automaton::InputDrivenDPDA > ( TikZConverter::convert );
+auto TikZConverterInputDrivenDPDA = TikZConverter::RegistratorWrapper < void, automaton::InputDrivenDPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::InputDrivenNPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -392,7 +392,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::InputDrivenNP
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::InputDrivenNPDA > TikZConverterInputDrivenNPDA = TikZConverter::RegistratorWrapper < void, automaton::InputDrivenNPDA > ( TikZConverter::convert );
+auto TikZConverterInputDrivenNPDA = TikZConverter::RegistratorWrapper < void, automaton::InputDrivenNPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::VisiblyPushdownDPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -421,7 +421,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::VisiblyPushdo
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::VisiblyPushdownDPDA > TikZConverterVisiblyPushdownDPDA = TikZConverter::RegistratorWrapper < void, automaton::VisiblyPushdownDPDA > ( TikZConverter::convert );
+auto TikZConverterVisiblyPushdownDPDA = TikZConverter::RegistratorWrapper < void, automaton::VisiblyPushdownDPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::VisiblyPushdownNPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -450,7 +450,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::VisiblyPushdo
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::VisiblyPushdownNPDA > TikZConverterVisiblyPushdownNPDA = TikZConverter::RegistratorWrapper < void, automaton::VisiblyPushdownNPDA > ( TikZConverter::convert );
+auto TikZConverterVisiblyPushdownNPDA = TikZConverter::RegistratorWrapper < void, automaton::VisiblyPushdownNPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::RealTimeHeightDeterministicDPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -479,7 +479,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::RealTimeHeigh
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::RealTimeHeightDeterministicDPDA > TikZConverterRealTimeHeightDeterministicDPDA = TikZConverter::RegistratorWrapper < void, automaton::RealTimeHeightDeterministicDPDA > ( TikZConverter::convert );
+auto TikZConverterRealTimeHeightDeterministicDPDA = TikZConverter::RegistratorWrapper < void, automaton::RealTimeHeightDeterministicDPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::RealTimeHeightDeterministicNPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -508,7 +508,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::RealTimeHeigh
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::RealTimeHeightDeterministicNPDA > TikZConverterRealTimeHeightDeterministicNPDA = TikZConverter::RegistratorWrapper < void, automaton::RealTimeHeightDeterministicNPDA > ( TikZConverter::convert );
+auto TikZConverterRealTimeHeightDeterministicNPDA = TikZConverter::RegistratorWrapper < void, automaton::RealTimeHeightDeterministicNPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::NPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -537,7 +537,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::NPDA & a ) {
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::NPDA > TikZConverterNPDA = TikZConverter::RegistratorWrapper < void, automaton::NPDA > ( TikZConverter::convert );
+auto TikZConverterNPDA = TikZConverter::RegistratorWrapper < void, automaton::NPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::SinglePopNPDA & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -566,7 +566,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::SinglePopNPDA
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::SinglePopNPDA > TikZConverterSinglePopNPDA = TikZConverter::RegistratorWrapper < void, automaton::SinglePopNPDA > ( TikZConverter::convert );
+auto TikZConverterSinglePopNPDA = TikZConverter::RegistratorWrapper < void, automaton::SinglePopNPDA > ( TikZConverter::convert );
 
 void TikZConverter::convert ( std::ostream & out, const automaton::OneTapeDTM & a ) {
 	out << "\\begin{tikzpicture}\n";
@@ -595,7 +595,7 @@ void TikZConverter::convert ( std::ostream & out, const automaton::OneTapeDTM &
 	out << "\\end{tikzpicture}";
 }
 
-TikZConverter::RegistratorWrapper < void, automaton::OneTapeDTM > TikZConverterOneTapeDTM = TikZConverter::RegistratorWrapper < void, automaton::OneTapeDTM > ( TikZConverter::convert );
+auto TikZConverterOneTapeDTM = TikZConverter::RegistratorWrapper < void, automaton::OneTapeDTM > ( TikZConverter::convert );
 
 void TikZConverter::transitions ( const automaton::EpsilonNFA & fsm, const std::map < automaton::State, int > & states, std::ostream & out ) {
 	std::map < std::pair < int, int >, std::string > transitions;