diff --git a/alib2data/src/automaton/FSM/CompactDFA.cpp b/alib2data/src/automaton/FSM/CompactDFA.cpp
index fc7a7d7587c9a7a98072343f0b9c96640fdf18d5..45dae6256d3e6d2b05204e5779d994340f3a9296 100644
--- a/alib2data/src/automaton/FSM/CompactDFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactDFA.cpp
@@ -11,6 +11,8 @@
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
+template class automaton::CompactDFA < >;
+
 namespace {
 
 static auto components = registration::ComponentRegister < automaton::CompactDFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/CompactDFA.h b/alib2data/src/automaton/FSM/CompactDFA.h
index ebf6bd470bddaf5c382a6832b0a7e6be523be458..d76da10a7b0a36e8a6756c97cf5081b83818375f 100644
--- a/alib2data/src/automaton/FSM/CompactDFA.h
+++ b/alib2data/src/automaton/FSM/CompactDFA.h
@@ -736,4 +736,6 @@ struct normalize < automaton::CompactDFA < SymbolType, StateType > > {
 
 } /* namespace core */
 
+extern template class automaton::CompactDFA < >;
+
 #endif /* COMPACT_DFA_H_ */
diff --git a/alib2data/src/automaton/FSM/CompactNFA.cpp b/alib2data/src/automaton/FSM/CompactNFA.cpp
index 12b1c47d4a52d0d3b70fd466a72a8b28dca42490..3914c4bf15fbea00812ca7a6a12088d6a562e538 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactNFA.cpp
@@ -11,6 +11,8 @@
 #include <registration/CastRegistration.hpp>
 #include <registration/ComponentRegistration.hpp>
 
+template class automaton::CompactNFA < >;
+
 namespace {
 
 static auto components = registration::ComponentRegister < automaton::CompactNFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h
index 51dcad7fbd82d2fd30592d9417a0508385ee2b97..f32eceb932bf55480a4063754d345e3e4bd551cc 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/FSM/CompactNFA.h
@@ -819,4 +819,6 @@ struct normalize < automaton::CompactNFA < SymbolType, StateType > > {
 
 } /* namespace core */
 
+extern template class automaton::CompactNFA < >;
+
 #endif /* COMPACT_NFA_H_ */
diff --git a/alib2data/src/automaton/FSM/DFA.cpp b/alib2data/src/automaton/FSM/DFA.cpp
index f23df78b19bbb92cdfa6a6b5f8a131a4c7c25c2c..fb104a84c1c1feeb8334268f4749b5a75ffaca92 100644
--- a/alib2data/src/automaton/FSM/DFA.cpp
+++ b/alib2data/src/automaton/FSM/DFA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::DFA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::DFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h
index 0849a868de0eff87c5fc25cb4dbb860f1bd01206..8da96a8d069980fffe1d5bc63290f28293be705a 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -733,4 +733,6 @@ struct normalize < automaton::DFA < SymbolType, StateType > > {
 
 } /* namespace core */
 
+extern template class automaton::DFA < >;
+
 #endif /* DFA_H_ */
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.cpp b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
index d02a3c8dbf18a70154a03668d5a616f59183982d..2be08061882064a85991d13d381c5f3f93a20434 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class automaton::EpsilonNFA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::EpsilonNFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h
index 04b472d5f356b1e34a43be00ad1ef1db95539a6d..63f910d777343d0f44704b01764180f35a47e8a4 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.h
@@ -1030,4 +1030,6 @@ struct normalize < automaton::EpsilonNFA < SymbolType, EpsilonType, StateType >
 
 } /* namespace core */
 
+extern template class automaton::EpsilonNFA < >;
+
 #endif /* EPSILON_NFA_H_ */
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.cpp b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
index 5da0b65751759100cde6ffc784cab6dafae6ce18..f00e5777b5a5217b5cfc0519ab20f47fa5f0878f 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.cpp
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class automaton::ExtendedNFA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::ExtendedNFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h
index 28095bf5c177ff5a9b1b230301cbebde756a57ee..63275de96fe38e31cabc15cb20b785893782ab2f 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.h
@@ -845,4 +845,6 @@ struct normalize < automaton::ExtendedNFA < SymbolType, StateType > > {
 
 } /* namespace core */
 
+extern template class automaton::ExtendedNFA < >;
+
 #endif /* EXTENDED_NFA_H_ */
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
index 8c5cda1552ab35e52b978664665bc8b87622700f..fd1a3472862f475f890d9938bb3f1eacc40e99fb 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class automaton::MultiInitialStateEpsilonNFA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::MultiInitialStateEpsilonNFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
index 2aa8b6e86ac18b2815ed53f13a0f1cd8c9de603b..9ac494ad1e44792e8db71ea54c3245a92d5258d0 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
@@ -1076,4 +1076,6 @@ struct normalize < automaton::MultiInitialStateEpsilonNFA < SymbolType, EpsilonT
 
 } /* namespace core */
 
+extern template class automaton::MultiInitialStateEpsilonNFA < >;
+
 #endif /* MULTI_INITIAL_STATE_EPSILON_NFA_H_ */
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
index a1bd29f7647131382f5db297397a9fc156c95845..0b1fb291d8518e8804809da0b67cf23f3915d270 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class automaton::MultiInitialStateNFA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::MultiInitialStateNFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
index c105ccf8d21bb29ab1b97dbad3cc2c13488bdaab..847eab355219bcce26c64c4624b8b47c44a2c2cd 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
@@ -804,4 +804,6 @@ struct normalize < automaton::MultiInitialStateNFA < SymbolType, StateType > > {
 
 } /* namespace core */
 
+extern template class automaton::MultiInitialStateNFA < >;
+
 #endif /* MULTI_INITIAL_STATE_NFA_H_ */
diff --git a/alib2data/src/automaton/FSM/NFA.cpp b/alib2data/src/automaton/FSM/NFA.cpp
index b49a674bcef79169d4886e4eb5ca8c87e4d9619e..704884f796bdb7d208cea81faeeb2589b329980d 100644
--- a/alib2data/src/automaton/FSM/NFA.cpp
+++ b/alib2data/src/automaton/FSM/NFA.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class automaton::NFA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::NFA < > > ( );
diff --git a/alib2data/src/automaton/FSM/NFA.h b/alib2data/src/automaton/FSM/NFA.h
index ce93f57ad7ffa85ab332386b731be5e69c8cb44f..2f874ef1488b9990e99a2a56a51efb4dcd066cf2 100644
--- a/alib2data/src/automaton/FSM/NFA.h
+++ b/alib2data/src/automaton/FSM/NFA.h
@@ -755,4 +755,6 @@ struct normalize < automaton::NFA < SymbolType, StateType > > {
 
 } /* namespace core */
 
+extern template class automaton::NFA < >;
+
 #endif /* NFA_H_ */
diff --git a/alib2data/src/automaton/PDA/DPDA.cpp b/alib2data/src/automaton/PDA/DPDA.cpp
index 4c889af6191c57e70c7d903d711594a0c28b9e19..d86b7cc3ee5757c43e799b7d2ec0948ad865541f 100644
--- a/alib2data/src/automaton/PDA/DPDA.cpp
+++ b/alib2data/src/automaton/PDA/DPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::DPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::DPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h
index ea1de656c294676c7459640624461e4b1a98708c..807962a2d4c0cf7c026a96d432be05fc960929a0 100644
--- a/alib2data/src/automaton/PDA/DPDA.h
+++ b/alib2data/src/automaton/PDA/DPDA.h
@@ -1041,4 +1041,6 @@ struct normalize < automaton::DPDA < InputSymbolType, EpsilonType, PushdownStore
 
 } /* namespace core */
 
+extern template class automaton::DPDA < >;
+
 #endif /* DPDA_H_ */
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
index ad402cec476e87469119e30508bd51acaf0d33b5..f40b2ec75d4b0a58cc6c2e55aeb73f1e68db41af 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::InputDrivenDPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::InputDrivenDPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
index 37ec6096af95b1dfed20f2e9f5bece43c4fab333..0e64c5f19771b5d5d93d2bd07cb85bb422fd26fc 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
@@ -1010,4 +1010,6 @@ struct normalize < automaton::InputDrivenDPDA < InputSymbolType, PushdownStoreSy
 
 } /* namespace core */
 
+extern template class automaton::InputDrivenDPDA < >;
+
 #endif /* INPUT_DRIVEN_DPDA_H_ */
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
index de4e7ee0493d0eff73a710e2b2798829c71de604..a3b19f379e45bc9b6b246f86aa126055179cb4f8 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::InputDrivenNPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::InputDrivenNPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
index 72bf30c7971f4019600fccaf63db74d14f66c7c2..4602a3c5b82bcd6766aa15f8a0c7db6f5b789b73 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
@@ -1049,4 +1049,6 @@ struct normalize < automaton::InputDrivenNPDA < InputSymbolType, PushdownStoreSy
 
 } /* namespace core */
 
+extern template class automaton::InputDrivenNPDA < >;
+
 #endif /* INPUT_DRIVEN_NPDA_H_ */
diff --git a/alib2data/src/automaton/PDA/NPDA.cpp b/alib2data/src/automaton/PDA/NPDA.cpp
index 9ecf921bc3e544c98d3161e90fdeae80bd83f18a..3a5ed7ae4cd9a6dd8dd9ef2387f1f06bd70d1597 100644
--- a/alib2data/src/automaton/PDA/NPDA.cpp
+++ b/alib2data/src/automaton/PDA/NPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::NPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::NPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h
index 7d896485a7221d9089f533b8ae5b1790eb89b5a4..8e604ccce0750e4779baab52c88b27b7ba3fdfd4 100644
--- a/alib2data/src/automaton/PDA/NPDA.h
+++ b/alib2data/src/automaton/PDA/NPDA.h
@@ -1017,4 +1017,6 @@ struct normalize < automaton::NPDA < InputSymbolType, EpsilonType, PushdownStore
 
 } /* namespace core */
 
+extern template class automaton::NPDA < >;
+
 #endif /* NPDA_H_ */
diff --git a/alib2data/src/automaton/PDA/NPDTA.cpp b/alib2data/src/automaton/PDA/NPDTA.cpp
index 48316e7b5efba2085afb41edd44f47f1730e662b..a4650844cce389dd5e2471faf4a6f9392940f193 100644
--- a/alib2data/src/automaton/PDA/NPDTA.cpp
+++ b/alib2data/src/automaton/PDA/NPDTA.cpp
@@ -1,16 +1,18 @@
-/*
- * NPDTA.cpp
- *
- *  Created on: 10. 5. 2016
- *      Author: Jakub Doupal
- */
-
-#include "NPDTA.h"
-
-#include <registration/ValuePrinterRegistration.hpp>
-
-namespace {
-
-static auto valuePrinter = registration::ValuePrinterRegister < automaton::NPDTA < > > ( );
-
-} /* namespace */
+/*
+ * NPDTA.cpp
+ *
+ *  Created on: 10. 5. 2016
+ *      Author: Jakub Doupal
+ */
+
+#include "NPDTA.h"
+
+#include <registration/ValuePrinterRegistration.hpp>
+
+template class automaton::NPDTA < >;
+
+namespace {
+
+static auto valuePrinter = registration::ValuePrinterRegister < automaton::NPDTA < > > ( );
+
+} /* namespace */
diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h
index 8222e48294614f4a148ad3f15a81c4fe9603e3b8..5988bad9c97f19d950bb47b616b3bb9bcd80052f 100644
--- a/alib2data/src/automaton/PDA/NPDTA.h
+++ b/alib2data/src/automaton/PDA/NPDTA.h
@@ -1186,7 +1186,8 @@ struct normalize < automaton::NPDTA < InputSymbolType, OutputSymbolType, Epsilon
 	}
 };
 
-
 } /* namespace core */
 
+extern template class automaton::NPDTA < >;
+
 #endif /* NPDTA_H_ */
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
index 39cb3c0c86965e903fae8eb8311e7636bd5d2174..da2f87f96b619833c035adec6e1d439a4499e3ba 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::RealTimeHeightDeterministicDPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::RealTimeHeightDeterministicDPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
index a6698e931ed83a2d805303cf4abba6d094cbe095..0524b02a6e444f277d0e5fd8a8726be699cc0f58 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
@@ -1445,4 +1445,6 @@ struct normalize < automaton::RealTimeHeightDeterministicDPDA < InputSymbolType,
 
 } /* namespace core */
 
+extern template class automaton::RealTimeHeightDeterministicDPDA < >;
+
 #endif /* REAL_TIME_HEIGHT_DETERMINISTIC_DPDA_H_ */
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
index 75ce4762df9540fa1f08b73ab2728eeffd4e0a48..c906b8b978a092617166b8c0253d2b32543631e1 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::RealTimeHeightDeterministicNPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::RealTimeHeightDeterministicNPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
index d114138ece16a11fd1f12e2002d1e0bd9cc83f48..a7ce5bdf222b52ee1a181423174bd988d0ba802c 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
@@ -1570,4 +1570,6 @@ struct normalize < automaton::RealTimeHeightDeterministicNPDA < InputSymbolType,
 
 } /* namespace core */
 
+extern template class automaton::RealTimeHeightDeterministicNPDA < >;
+
 #endif /* REAL_TIME_HEIGHT_DETERMINISTIC_NPDA_H_ */
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
index 6c17b30ce770c61c0b820183c5caddec60c683ef..4d60f298c7bf6642eb2d9694d1c862ebc0ff183c 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::SinglePopDPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::SinglePopDPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h
index 91933494cab818b9c280f371d191a93100f00084..3436fe5f4bc2a31600491983f96c9301e57098e3 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h
@@ -965,4 +965,6 @@ struct normalize < automaton::SinglePopDPDA < InputSymbolType, EpsilonType, Push
 
 } /* namespace core */
 
+extern template class automaton::SinglePopDPDA < >;
+
 #endif /* SINGLE_POP_DPDA_H_ */
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
index ab4db62db6e684fdfe0eb198ea59ea92fc807956..4f458099c6f0ec200239b5135863dedcb276b67e 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::SinglePopNPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::SinglePopNPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h
index d4de8200d4448128b844d377f22ba25c46e9062c..50fc9ee9b93de47affb77e48d5975a65074dd1b9 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h
@@ -1020,4 +1020,6 @@ struct normalize < automaton::SinglePopNPDA < InputSymbolType, EpsilonType, Push
 
 } /* namespace core */
 
+extern template class automaton::SinglePopNPDA < >;
+
 #endif /* SINGLE_POP_NPDA_H_ */
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
index 0c59c0395838ed76d7dfee7872fbd94a069fe3b1..6b9c111c9e1f115f147fd84cb6760213ead4f1e4 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::VisiblyPushdownDPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::VisiblyPushdownDPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
index b65266de80c6dca12597fed178f511979dfe9b24..df2d037de521206529fb7415c8dfc969e99b53ae 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
@@ -1367,4 +1367,6 @@ struct normalize < automaton::VisiblyPushdownDPDA < InputSymbolType, PushdownSto
 
 } /* namespace core */
 
+extern template class automaton::VisiblyPushdownDPDA < >;
+
 #endif /* VISIBLY_PUSHDOWN_DPDA_H_ */
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
index 0c1353aa1601f985dfef0da3f3dfa20f7686b8e1..266ed7bf36e2a4dcf591ce520f5546d12a733de7 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::VisiblyPushdownNPDA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::VisiblyPushdownNPDA < > > ( );
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
index 442401f6be842bbf1e7feca5e6ec5af10abe94e8..37a1085406952f67c2e993c5c461e27f25f8135e 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
@@ -1430,7 +1430,8 @@ struct normalize < automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownSto
 	}
 };
 
-
 } /* namespace core */
 
+extern template class automaton::VisiblyPushdownNPDA < >;
+
 #endif /* VISIBLY_PUSHDOWN_NPDA_H_ */
diff --git a/alib2data/src/automaton/TA/DFTA.cpp b/alib2data/src/automaton/TA/DFTA.cpp
index f7713484b440004514c69db10d3a4f2e80585cc0..6910ca01d9bc25e74a56c34c018cdc7a178eac49 100644
--- a/alib2data/src/automaton/TA/DFTA.cpp
+++ b/alib2data/src/automaton/TA/DFTA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::DFTA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::DFTA < > > ( );
diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h
index 875fdbd3057cf57744d3d46779ebd0c9c2dca9f0..5b3cb3aa58bbdf8b7ffc44ebac3543d040a8ef5f 100644
--- a/alib2data/src/automaton/TA/DFTA.h
+++ b/alib2data/src/automaton/TA/DFTA.h
@@ -634,4 +634,6 @@ struct normalize < automaton::DFTA < SymbolType, RankType, StateType > > {
 
 } /* namespace core */
 
+extern template class automaton::DFTA < >;
+
 #endif /* DFTA_H_ */
diff --git a/alib2data/src/automaton/TA/ExtendedNFTA.cpp b/alib2data/src/automaton/TA/ExtendedNFTA.cpp
index 0e5f3e80788a097b329fc118f04eeb0114a67a5d..328245766a3cc84a9b57b0b67945f33e2595bddc 100644
--- a/alib2data/src/automaton/TA/ExtendedNFTA.cpp
+++ b/alib2data/src/automaton/TA/ExtendedNFTA.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::ExtendedNFTA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::ExtendedNFTA < > > ( );
diff --git a/alib2data/src/automaton/TA/ExtendedNFTA.h b/alib2data/src/automaton/TA/ExtendedNFTA.h
index 8de6a7b23569908e069ba41f44fca16cd3143502..817f488f658e5505b9a1d591ea0512cb006e2f91 100644
--- a/alib2data/src/automaton/TA/ExtendedNFTA.h
+++ b/alib2data/src/automaton/TA/ExtendedNFTA.h
@@ -717,4 +717,6 @@ struct normalize < automaton::ExtendedNFTA < SymbolType, RankType, StateType > >
 
 } /* namespace core */
 
+extern template class automaton::ExtendedNFTA < >;
+
 #endif /* EXTENDED_NFTA_H_ */
diff --git a/alib2data/src/automaton/TA/NFTA.cpp b/alib2data/src/automaton/TA/NFTA.cpp
index 9fab9bf3ba06e8d681f8986f927cd1f5dfe31846..936bb0243fbcb51e03da1f62070354b0a0d7add5 100644
--- a/alib2data/src/automaton/TA/NFTA.cpp
+++ b/alib2data/src/automaton/TA/NFTA.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class automaton::NFTA < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::NFTA < > > ( );
diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h
index 04f362c22cb7d94b08cb2c1220caa068a7c5d793..45e87864fb4c078d7732bf2ac05e3e7c0707a6bc 100644
--- a/alib2data/src/automaton/TA/NFTA.h
+++ b/alib2data/src/automaton/TA/NFTA.h
@@ -662,4 +662,6 @@ struct normalize < automaton::NFTA < SymbolType, RankType, StateType > > {
 
 } /* namespace core */
 
+extern template class automaton::NFTA < >;
+
 #endif /* NFTA_H_ */
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.cpp b/alib2data/src/automaton/TM/OneTapeDTM.cpp
index 5d10fd850de7d416ac96fbfc095bc7b325322079..b397bf34f7ebc451b208bce3a9302bf035ba82e0 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.cpp
+++ b/alib2data/src/automaton/TM/OneTapeDTM.cpp
@@ -9,6 +9,8 @@
 
 #include <registration/ValuePrinterRegistration.hpp>
 
+template class automaton::OneTapeDTM < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < automaton::OneTapeDTM < > > ( );
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h
index a5d46f9e0e6470ffbd3d4758e93a8057caa5ce1a..ce60e801d8deb0420e99e320f28e2bf36baabc65 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/TM/OneTapeDTM.h
@@ -845,4 +845,6 @@ struct normalize < automaton::OneTapeDTM < SymbolType, StateType > > {
 
 } /* namespace core */
 
+extern template class automaton::OneTapeDTM < >;
+
 #endif /* ONE_TAPE_DTM_H_ */
diff --git a/alib2data/src/grammar/ContextFree/CFG.cpp b/alib2data/src/grammar/ContextFree/CFG.cpp
index a47466534c9f467d848f4cf092885429a72aa6c8..def3e95fe913b02198746d97a18932f3626dfbb3 100644
--- a/alib2data/src/grammar/ContextFree/CFG.cpp
+++ b/alib2data/src/grammar/ContextFree/CFG.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::CFG < >;
+
 namespace {
 
 static auto CFGEpsilonFreeCFG = registration::CastRegister < grammar::CFG < >, grammar::EpsilonFreeCFG < > > ( );
diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h
index c911b168c1a88b87e93144159fae2a2c434d5adf..4c7a5596b65edbad05a014c81744fb1c9e9af826 100644
--- a/alib2data/src/grammar/ContextFree/CFG.h
+++ b/alib2data/src/grammar/ContextFree/CFG.h
@@ -534,4 +534,6 @@ struct normalize < grammar::CFG < TerminalSymbolType, NonterminalSymbolType > >
 
 } /* namespace core */
 
+extern template class grammar::CFG < >;
+
 #endif /* CFG_H_ */
diff --git a/alib2data/src/grammar/ContextFree/CNF.cpp b/alib2data/src/grammar/ContextFree/CNF.cpp
index 290b678b5749595d9fdb9828d9e724a002704704..e64e7540ad8fd864f700cc65ca06839f93f0c7eb 100644
--- a/alib2data/src/grammar/ContextFree/CNF.cpp
+++ b/alib2data/src/grammar/ContextFree/CNF.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::CNF < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::CNF < > > ( );
diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h
index 52f2730e3abb03ec9af378c6c0006b29bad31261..e82b8791874b8bb95911907d895820353c260b00 100644
--- a/alib2data/src/grammar/ContextFree/CNF.h
+++ b/alib2data/src/grammar/ContextFree/CNF.h
@@ -643,4 +643,6 @@ struct normalize < grammar::CNF < TerminalSymbolType, NonterminalSymbolType > >
 
 } /* namespace core */
 
+extern template class grammar::CNF < >;
+
 #endif /* CNF_H_ */
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
index 6465027c45fd1432f90bd29bc1eb88341a6f1500..8d7c6df33530ede31cb1b10016df4d9b7007e7d3 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::EpsilonFreeCFG < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::EpsilonFreeCFG < > > ( );
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
index 24cf6c4eed73f1e8cf0f9f41548154250f1f9fb7..5cc6fea1894883a80a2edfb0ac133823113108c6 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
@@ -554,4 +554,6 @@ struct normalize < grammar::EpsilonFreeCFG < TerminalSymbolType, NonterminalSymb
 
 } /* namespace core */
 
+extern template class grammar::EpsilonFreeCFG < >;
+
 #endif /* EPSILON_FREE_CFG_H_ */
diff --git a/alib2data/src/grammar/ContextFree/GNF.cpp b/alib2data/src/grammar/ContextFree/GNF.cpp
index 299c59857abc7232affc8414134cc775773470d2..b488e21c3d154022d94799efa30350178ab9013c 100644
--- a/alib2data/src/grammar/ContextFree/GNF.cpp
+++ b/alib2data/src/grammar/ContextFree/GNF.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::GNF < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::GNF < > > ( );
diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h
index dcfec94ca2b7d7ee5acbf18680f53727004aa75e..767fe3e8404891b26d8f6cc15879b6db415a9306 100644
--- a/alib2data/src/grammar/ContextFree/GNF.h
+++ b/alib2data/src/grammar/ContextFree/GNF.h
@@ -552,4 +552,6 @@ struct normalize < grammar::GNF < TerminalSymbolType, NonterminalSymbolType > >
 
 } /* namespace core */
 
+extern template class grammar::GNF < >;
+
 #endif /* GNF_H_ */
diff --git a/alib2data/src/grammar/ContextFree/LG.cpp b/alib2data/src/grammar/ContextFree/LG.cpp
index 3fd4da7dec677fe8ac8434f96ff18c2ff17160d2..f989e6a669663f39faa3247403f08c2070d938f4 100644
--- a/alib2data/src/grammar/ContextFree/LG.cpp
+++ b/alib2data/src/grammar/ContextFree/LG.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::LG < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::LG < > > ( );
diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h
index 3a7c68c3570833d6be80a3e2110e4df6ff29c5dd..668eadb71b4d338f87046d491f99858a989f04e0 100644
--- a/alib2data/src/grammar/ContextFree/LG.h
+++ b/alib2data/src/grammar/ContextFree/LG.h
@@ -645,4 +645,6 @@ struct normalize < grammar::LG < TerminalSymbolType, NonterminalSymbolType > > {
 
 } /* namespace core */
 
+extern template class grammar::LG < >;
+
 #endif /* LG_H_ */
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.cpp b/alib2data/src/grammar/ContextSensitive/CSG.cpp
index eb13a050c0e2e7e21ad54384e2c44d303529652b..a2fa46094d24c1d7c34bf081d52ed859adfd9cc9 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.cpp
+++ b/alib2data/src/grammar/ContextSensitive/CSG.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::CSG < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::CSG < > > ( );
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h
index 695431ace06168e83ac8a6d9648376b1aed26b3c..520ffabc5be6abbe1dd21f287eab4222e84e4e37 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/ContextSensitive/CSG.h
@@ -593,4 +593,6 @@ struct normalize < grammar::CSG < SymbolType > > {
 
 } /* namespace core */
 
+extern template class grammar::CSG < >;
+
 #endif /* CSG_H_ */
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
index 6e41b1d8b6076ee5f90b65aaa09b282e725e20e5..de357009f2d7076fab3e13d288a4a1f07dc20442 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::NonContractingGrammar < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::NonContractingGrammar < > > ( );
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
index aace2460896d3cbcc27ee735a41f53e45fbf2b07..408c624450065b86518594c61e742c1685c51722 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
@@ -576,4 +576,6 @@ struct normalize < grammar::NonContractingGrammar < SymbolType > > {
 
 } /* namespace core */
 
+extern template class grammar::NonContractingGrammar < >;
+
 #endif /* NON_CONTRACTING_GRAMMAR_H_ */
diff --git a/alib2data/src/grammar/Regular/LeftLG.cpp b/alib2data/src/grammar/Regular/LeftLG.cpp
index 89e1dcc91b6ce5fd7c071329c870d0e922748587..7c7abb64859bc6b9f302b4d805e7515494809744 100644
--- a/alib2data/src/grammar/Regular/LeftLG.cpp
+++ b/alib2data/src/grammar/Regular/LeftLG.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::LeftLG < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::LeftLG < > > ( );
diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h
index 079d41f1a52e2c9cc84d9e6309b821d861a67f55..ee567c954b18dca5ef681b52ccd2fa4056bc2967 100644
--- a/alib2data/src/grammar/Regular/LeftLG.h
+++ b/alib2data/src/grammar/Regular/LeftLG.h
@@ -628,4 +628,6 @@ struct normalize < grammar::LeftLG < TerminalSymbolType, NonterminalSymbolType >
 
 } /* namespace core */
 
+extern template class grammar::LeftLG < >;
+
 #endif /* LEFT_LG_H_ */
diff --git a/alib2data/src/grammar/Regular/LeftRG.cpp b/alib2data/src/grammar/Regular/LeftRG.cpp
index 72385f7a342853ae4a65d5802a5e44394050fa2e..9d81cdd1b0dde6a78234900265a96260633adde4 100644
--- a/alib2data/src/grammar/Regular/LeftRG.cpp
+++ b/alib2data/src/grammar/Regular/LeftRG.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::LeftRG < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::LeftRG < > > ( );
diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h
index 1332da8b3a6896cf5e785e4728a649992e35e6b4..67cfd9840b2f32f2bc1d16bdbc5d6916a0f70413 100644
--- a/alib2data/src/grammar/Regular/LeftRG.h
+++ b/alib2data/src/grammar/Regular/LeftRG.h
@@ -553,7 +553,7 @@ public:
 	}
 
 	/**
--	 * Returns true as all terminal symbols are possibly available to be nonterminal symbols.
+	 * Returns true as all terminal symbols are possibly available to be nonterminal symbols.
 	 *
 	 * \param grammar the tested grammar
 	 * \param symbol the tested symbol
@@ -642,4 +642,6 @@ struct normalize < grammar::LeftRG < TerminalSymbolType, NonterminalSymbolType >
 
 } /* namespace core */
 
+extern template class grammar::LeftRG < >;
+
 #endif /* LEFT_RG_H_ */
diff --git a/alib2data/src/grammar/Regular/RightLG.cpp b/alib2data/src/grammar/Regular/RightLG.cpp
index ffe6b7dbefc1db377b0e4ab5e884a83fb0bd1b7b..ca8f464a918835df56df3b786bf5e928af0b4c0e 100644
--- a/alib2data/src/grammar/Regular/RightLG.cpp
+++ b/alib2data/src/grammar/Regular/RightLG.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::RightLG < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::RightLG < > > ( );
diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h
index 74f18f6ee8c8afbd70d88190219f31467728397f..128316009d94e897437be895c796edd43b66775c 100644
--- a/alib2data/src/grammar/Regular/RightLG.h
+++ b/alib2data/src/grammar/Regular/RightLG.h
@@ -625,4 +625,6 @@ struct normalize < grammar::RightLG < TerminalSymbolType, NonterminalSymbolType
 
 } /* namespace core */
 
+extern template class grammar::RightLG < >;
+
 #endif /* RIGHT_LG_H_ */
diff --git a/alib2data/src/grammar/Regular/RightRG.cpp b/alib2data/src/grammar/Regular/RightRG.cpp
index b0f55ccba0b32780a1a0f383216d89bdc7064fca..e455f7a4b5b7fa545005761294f24d2a45278bca 100644
--- a/alib2data/src/grammar/Regular/RightRG.cpp
+++ b/alib2data/src/grammar/Regular/RightRG.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::RightRG < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::RightRG < > > ( );
diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h
index c9417458b9339a8116057e617fcb9b79ead82d8e..06925c4cd82206efaac8ead526895e9015bddfc5 100644
--- a/alib2data/src/grammar/Regular/RightRG.h
+++ b/alib2data/src/grammar/Regular/RightRG.h
@@ -641,4 +641,6 @@ struct normalize < grammar::RightRG < TerminalSymbolType, NonterminalSymbolType
 
 } /* namespace core */
 
+extern template class grammar::RightRG < >;
+
 #endif /* RIGHT_RG_H_ */
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
index 07fa7b88aa9a03cd5a616832ea11d1c1b1392956..03ac8927d3e510340038fc184108b0aee78feb95 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::ContextPreservingUnrestrictedGrammar < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::ContextPreservingUnrestrictedGrammar < > > ( );
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
index be67f9cebb488663d24fea2045d3113059398fc5..52401004898bad201dc194a7fdbc12a873eb520f 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -553,4 +553,6 @@ struct normalize < grammar::ContextPreservingUnrestrictedGrammar < SymbolType >
 
 } /* namespace core */
 
+extern template class grammar::ContextPreservingUnrestrictedGrammar < >;
+
 #endif /* CONTEXT_PRESERVING_UNRESTRICTED_GRAMMAR_H_ */
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
index 92c80b9e65f9911680f07563f97c486524f6889a..fadd7e0be8a1518b1fc30776570183e2d8db6eb3 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
@@ -10,6 +10,8 @@
 #include <registration/ValuePrinterRegistration.hpp>
 #include <registration/CastRegistration.hpp>
 
+template class grammar::UnrestrictedGrammar < >;
+
 namespace {
 
 static auto valuePrinter = registration::ValuePrinterRegister < grammar::UnrestrictedGrammar < > > ( );
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
index 6238f03aeb4a2d9ea2b38d46a3431899b801b223..0686053162b8a3d043ca1a4299a853aaa18cb989 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
@@ -534,4 +534,6 @@ struct normalize < grammar::UnrestrictedGrammar < SymbolType > > {
 
 } /* namespace core */
 
+extern template class grammar::UnrestrictedGrammar < >;
+
 #endif /* UNRESTRICTED_GRAMMAR_H_ */