diff --git a/alib2abstraction/src/registration/NormalizationRegistration.hpp b/alib2abstraction/src/registration/NormalizationRegistration.hpp
index ae594f26c272addf79086a0804004f46329960d8..75fe89d6c4ca0299c19f7bbe45a06c7f72d51cf9 100644
--- a/alib2abstraction/src/registration/NormalizationRegistration.hpp
+++ b/alib2abstraction/src/registration/NormalizationRegistration.hpp
@@ -12,15 +12,18 @@ class NormalizationRegisterEmpty {
 template < class ReturnType >
 class NormalizationRegisterImpl : public ext::Register < std::list < std::unique_ptr < abstraction::NormalizeRegistry::Entry > >::const_iterator > {
 public:
-	explicit NormalizationRegisterImpl ( ) : ext::Register < std::list < std::unique_ptr < abstraction::NormalizeRegistry::Entry > >::const_iterator > (
-			[ ] ( ) {
-				return abstraction::NormalizeRegistry::registerNormalize < ReturnType > ( );
-			}, [ ] ( std::list < std::unique_ptr < abstraction::NormalizeRegistry::Entry > >::const_iterator iter ) {
-				abstraction::NormalizeRegistry::unregisterNormalize < ReturnType > ( iter );
-			} ) {
-	}
+	explicit NormalizationRegisterImpl ( );
 };
 
+template < class ReturnType >
+NormalizationRegisterImpl < ReturnType >::NormalizationRegisterImpl ( ) : ext::Register < std::list < std::unique_ptr < abstraction::NormalizeRegistry::Entry > >::const_iterator > (
+		[ ] ( ) {
+			return abstraction::NormalizeRegistry::registerNormalize < ReturnType > ( );
+		}, [ ] ( std::list < std::unique_ptr < abstraction::NormalizeRegistry::Entry > >::const_iterator iter ) {
+			abstraction::NormalizeRegistry::unregisterNormalize < ReturnType > ( iter );
+		} ) {
+}
+
 template < class ReturnType >
 using NormalizationRegister = std::conditional_t < core::is_specialized < core::type_util < ReturnType > >, NormalizationRegisterImpl < ReturnType >, NormalizationRegisterEmpty >;
 
diff --git a/alib2data/src/automaton/FSM/CompactDFA.cpp b/alib2data/src/automaton/FSM/CompactDFA.cpp
index 1b39d5e2eda414fcce6fa58742e4415fa75576b3..33feec0cc8a27e649359cd4aa78eebf5539907ee 100644
--- a/alib2data/src/automaton/FSM/CompactDFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactDFA.cpp
@@ -6,6 +6,7 @@
 
 template class automaton::CompactDFA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::CompactDFA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::CompactDFA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/FSM/CompactDFA.h b/alib2data/src/automaton/FSM/CompactDFA.h
index e2156a3845f10300c2a2cd16f6f124334ab91dae..fdea97e4316ad325cb664c62b1bde71d0755acee 100644
--- a/alib2data/src/automaton/FSM/CompactDFA.h
+++ b/alib2data/src/automaton/FSM/CompactDFA.h
@@ -47,6 +47,7 @@
 #include "DFA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -778,3 +779,4 @@ struct type_details_retriever < automaton::CompactDFA < SymbolType, StateType >
 
 extern template class automaton::CompactDFA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::CompactDFA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::CompactDFA < > >;
diff --git a/alib2data/src/automaton/FSM/CompactNFA.cpp b/alib2data/src/automaton/FSM/CompactNFA.cpp
index 5c9f1950e6a86552fd521e811cf8aee100a6fc0f..64cf56f620ffa0d829a7998106440cb344f62d5a 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.cpp
+++ b/alib2data/src/automaton/FSM/CompactNFA.cpp
@@ -6,6 +6,7 @@
 
 template class automaton::CompactNFA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::CompactNFA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::CompactNFA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h
index 56d60fbff1cadc0f2d82d3ab2d42693e57eee8ce..c6844e088791fab68f569a0fc1289c5b19c16d16 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/FSM/CompactNFA.h
@@ -52,6 +52,7 @@
 #include "DFA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -849,3 +850,4 @@ struct type_details_retriever < automaton::CompactNFA < SymbolType, StateType >
 
 extern template class automaton::CompactNFA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::CompactNFA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::CompactNFA < > >;
diff --git a/alib2data/src/automaton/FSM/DFA.cpp b/alib2data/src/automaton/FSM/DFA.cpp
index c6748b8f1bca044ba9df24011b26589ce36ca22f..6c7eb1b078d44ff48067e1ea90ba5d260fa9a55b 100644
--- a/alib2data/src/automaton/FSM/DFA.cpp
+++ b/alib2data/src/automaton/FSM/DFA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::DFA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::DFA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::DFA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h
index 15b6be6bd677bec328b5c59a4b4f4938a0f6445a..6ca984bf80ae8d586a5e7a347763eb0cbf4a4964 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -42,6 +42,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -771,3 +772,4 @@ struct type_details_retriever < automaton::DFA < SymbolType, StateType > > {
 
 extern template class automaton::DFA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::DFA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::DFA < > >;
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.cpp b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
index 4e8b0bfd9a6cae363bd76a425c5dc02b24055c4a..e1ba22bbd87b50149f1501365d14e047987f4e8d 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::EpsilonNFA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::EpsilonNFA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::EpsilonNFA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h
index 9d99f6684adb6ef8ffca684d55580ca125caa070..5838dcdd6e9ae6335f46f9f5a3b6279291ce4feb 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.h
@@ -49,6 +49,7 @@
 #include "DFA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1062,3 +1063,4 @@ struct type_details_retriever < automaton::EpsilonNFA < SymbolType, StateType >
 
 extern template class automaton::EpsilonNFA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::EpsilonNFA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::EpsilonNFA < > >;
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.cpp b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
index 154127a8e142ad549a64c54d8c074de3ca9eb069..e90cf3584872a47b6ba5e7f18fe36f2d94c2b8d7 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.cpp
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::ExtendedNFA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::ExtendedNFA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::ExtendedNFA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h
index 27680a6178f65b9f1b3a4fef34a516a23627ce14..397b2e4bc55c29d4ef8bf4ca90e9755660b755e6 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.h
@@ -54,6 +54,7 @@
 #include "MultiInitialStateNFA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -875,3 +876,4 @@ struct type_details_retriever < automaton::ExtendedNFA < SymbolType, StateType >
 
 extern template class automaton::ExtendedNFA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::ExtendedNFA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::ExtendedNFA < > >;
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
index 8e933ad34aaf4690d085d383469c3701fd064e83..3ba0d668d026dee975960d149746b8380e65fd84 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::MultiInitialStateEpsilonNFA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::MultiInitialStateEpsilonNFA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::MultiInitialStateEpsilonNFA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
index 2ec960c6d7539273888fc1e78ab41f5865caba18..486a00ea2432a4a06649d7cf25a3a8342e801ebb 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateEpsilonNFA.h
@@ -50,6 +50,7 @@
 #include "DFA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1107,3 +1108,4 @@ struct type_details_retriever < automaton::MultiInitialStateEpsilonNFA < SymbolT
 
 extern template class automaton::MultiInitialStateEpsilonNFA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::MultiInitialStateEpsilonNFA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::MultiInitialStateEpsilonNFA < > >;
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
index 846eb473f420b42dfb2f1df317fc9f7279a4b4e1..8071783cd65a8e0cb907c5239aab48b45c6754c8 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::MultiInitialStateNFA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::MultiInitialStateNFA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::MultiInitialStateNFA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
index 82cfda0926467d3e788822d45b116f895c07a829..e51f0103ed77717e35e5f48938e905b837bc32fc 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
@@ -44,6 +44,7 @@
 #include "DFA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -836,3 +837,4 @@ struct type_details_retriever < automaton::MultiInitialStateNFA < SymbolType, St
 
 extern template class automaton::MultiInitialStateNFA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::MultiInitialStateNFA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::MultiInitialStateNFA < > >;
diff --git a/alib2data/src/automaton/FSM/NFA.cpp b/alib2data/src/automaton/FSM/NFA.cpp
index af6cfb84adeb3e1d768a8d025002aed7a033b016..6f3de9b71cb472da900d3c1a32ca971642f1fcb7 100644
--- a/alib2data/src/automaton/FSM/NFA.cpp
+++ b/alib2data/src/automaton/FSM/NFA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::NFA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::NFA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::NFA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/FSM/NFA.h b/alib2data/src/automaton/FSM/NFA.h
index 0eab5bc30d181d67e731e6a28de3f9db219b6adb..7c98b8dce8c277e64853cdb0bf7946cc1ffef4db 100644
--- a/alib2data/src/automaton/FSM/NFA.h
+++ b/alib2data/src/automaton/FSM/NFA.h
@@ -41,6 +41,7 @@
 #include "DFA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -794,3 +795,4 @@ struct type_details_retriever < automaton::NFA < SymbolType, StateType > > {
 
 extern template class automaton::NFA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NFA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::NFA < > >;
diff --git a/alib2data/src/automaton/PDA/DPDA.cpp b/alib2data/src/automaton/PDA/DPDA.cpp
index eca2710315dde294ac2409ba15b1da54af62e43c..baacf17a4fda7f37866c12e9dc379de698d5b97f 100644
--- a/alib2data/src/automaton/PDA/DPDA.cpp
+++ b/alib2data/src/automaton/PDA/DPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::DPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::DPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::DPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h
index 4cabcdd73c221b2ac9c1b192286753e411beed74..07be89d969343a387f4f0acef4db2eb5190d4692 100644
--- a/alib2data/src/automaton/PDA/DPDA.h
+++ b/alib2data/src/automaton/PDA/DPDA.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1083,3 +1084,4 @@ struct type_details_retriever < automaton::DPDA < InputSymbolType, PushdownStore
 
 extern template class automaton::DPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::DPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::DPDA < > >;
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
index a5ec3edbcc1b08b6c6c4762cf75613502278e496..2e2cea8d4ef04c3a89b36b3329c06122b5d7b018 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::InputDrivenDPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::InputDrivenDPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::InputDrivenDPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
index fec02229477948e04a67b21c72010dcae5f3778a..04cf1c2da224fe805bfc2fa7d5fc56eacbb6aafa 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
@@ -42,6 +42,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1068,3 +1069,4 @@ struct type_details_retriever < automaton::InputDrivenDPDA < InputSymbolType, Pu
 
 extern template class automaton::InputDrivenDPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::InputDrivenDPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::InputDrivenDPDA < > >;
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
index 7ad538dbad2201007284fdf4abd5eabb8c7e95cb..ba36b02a3043401c5f9895a635252b15fc9420ba 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::InputDrivenNPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::InputDrivenNPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::InputDrivenNPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
index d75918ae86172686d70f209806cb5668d0853f06..e6f56a6a2b86b753582669796e020bf36a29ea9b 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
@@ -42,6 +42,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1086,3 +1087,4 @@ struct type_details_retriever < automaton::InputDrivenNPDA < InputSymbolType, Pu
 
 extern template class automaton::InputDrivenNPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::InputDrivenNPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::InputDrivenNPDA < > >;
diff --git a/alib2data/src/automaton/PDA/NPDA.cpp b/alib2data/src/automaton/PDA/NPDA.cpp
index 4de3f184872b85485d54ae3f7ff4a8d253a4731e..6febd54f00ae98ac82e56642b986c3ef8061de47 100644
--- a/alib2data/src/automaton/PDA/NPDA.cpp
+++ b/alib2data/src/automaton/PDA/NPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::NPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::NPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::NPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h
index 9f16826db2115c6ff46baf7dc35e66b34e1687ea..f68c4b2b6232c0e60f21499725a4d9a76b5e1a62 100644
--- a/alib2data/src/automaton/PDA/NPDA.h
+++ b/alib2data/src/automaton/PDA/NPDA.h
@@ -41,6 +41,7 @@
 #include <automaton/PDA/DPDA.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1049,3 +1050,4 @@ struct type_details_retriever < automaton::NPDA < InputSymbolType, PushdownStore
 
 extern template class automaton::NPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::NPDA < > >;
diff --git a/alib2data/src/automaton/PDA/NPDTA.cpp b/alib2data/src/automaton/PDA/NPDTA.cpp
index 7320033b6963edaae7981e781f4ffd9043585e93..39c9dd8fb8ce2b87c84d36da05f1cfbb12f3364f 100644
--- a/alib2data/src/automaton/PDA/NPDTA.cpp
+++ b/alib2data/src/automaton/PDA/NPDTA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::NPDTA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::NPDTA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::NPDTA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h
index 3776e5a903c708054b56d647df1a83fdddc33f80..6f1f0df4afd4d9ae1efd8757b962323b23b48cb4 100644
--- a/alib2data/src/automaton/PDA/NPDTA.h
+++ b/alib2data/src/automaton/PDA/NPDTA.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1166,3 +1167,4 @@ struct type_details_retriever < automaton::NPDTA < InputSymbolType, OutputSymbol
 
 extern template class automaton::NPDTA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NPDTA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::NPDTA < > >;
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
index e446093693e66bacbbf3e084d61d769855727710..6e782423a68530d083967edee77eafa39c151179 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::RealTimeHeightDeterministicDPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::RealTimeHeightDeterministicDPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::RealTimeHeightDeterministicDPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
index 3c24c14103c3ad7827cb771bbb405dece75627b0..fa114507a37b58c1318dc56085cf26e2a65883e7 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1505,3 +1506,4 @@ struct type_details_retriever < automaton::RealTimeHeightDeterministicDPDA < Inp
 
 extern template class automaton::RealTimeHeightDeterministicDPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::RealTimeHeightDeterministicDPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::RealTimeHeightDeterministicDPDA < > >;
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
index 98fe888fa007fce1f64ac6d81082ca979f5f2c59..022ad6a0252ebea12806d5805cbc2e551a49ae4e 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::RealTimeHeightDeterministicNPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::RealTimeHeightDeterministicNPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::RealTimeHeightDeterministicNPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
index dd953aac1fe9f8a3a669d857f42f5ae6e146b6e7..a14bebaa253518c0c2aa5ccf33a0335f810a4b9c 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1451,3 +1452,4 @@ struct type_details_retriever < automaton::RealTimeHeightDeterministicNPDA < Inp
 
 extern template class automaton::RealTimeHeightDeterministicNPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::RealTimeHeightDeterministicNPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::RealTimeHeightDeterministicNPDA < > >;
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
index f08a538b05133f3ed79226b10a564e4eda4f49bb..9670e614d2bbf9b460e943cf94cec15ae0bced6a 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::SinglePopDPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::SinglePopDPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::SinglePopDPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h
index d45137c23c537bbcdb3f1270ad0d435002d4651f..23b33b72f48d267acbd9f1da762eef8efd4d6ce5 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h
@@ -41,6 +41,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1008,3 +1009,4 @@ struct type_details_retriever < automaton::SinglePopDPDA < InputSymbolType, Push
 
 extern template class automaton::SinglePopDPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::SinglePopDPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::SinglePopDPDA < > >;
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
index 60568f644570d3d126ab51d268b30cefe49840d4..9600bce0c9e7a177af0af93554cda21ee1b7ba7d 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::SinglePopNPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::SinglePopNPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::SinglePopNPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h
index 41e086a82050297982c3ffb8d511919d0017c8b3..4848095f9bc44e5247950fe26a4e59402a22988b 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -993,3 +994,4 @@ struct type_details_retriever < automaton::SinglePopNPDA < InputSymbolType, Push
 
 extern template class automaton::SinglePopNPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::SinglePopNPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::SinglePopNPDA < > >;
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
index 3729afbc6e458b512d81b8762e63fbfc11b811eb..0fbd2896d68faa2597a352ec30abc089ae53df7f 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::VisiblyPushdownDPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::VisiblyPushdownDPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::VisiblyPushdownDPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
index 65697aedc1043e5a28e6dd2d49539fe11a3ad881..14b6712d0060828364320e9a7adbd1585c0b4ac7 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1438,3 +1439,4 @@ struct type_details_retriever < automaton::VisiblyPushdownDPDA < InputSymbolType
 
 extern template class automaton::VisiblyPushdownDPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::VisiblyPushdownDPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::VisiblyPushdownDPDA < > >;
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
index 11cb0df5ebcfddb7e5c0f9be71179ca4d24b6b0b..bd1604c2ff5503facff1c437be13a2a36c81144c 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::VisiblyPushdownNPDA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::VisiblyPushdownNPDA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::VisiblyPushdownNPDA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
index ecbacb6dc7d60556d334620e7fea3faf1028c3e8..e296f81595c6b5df05da8fd8a171df569627f978 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -1434,3 +1435,4 @@ struct type_details_retriever < automaton::VisiblyPushdownNPDA < InputSymbolType
 
 extern template class automaton::VisiblyPushdownNPDA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::VisiblyPushdownNPDA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::VisiblyPushdownNPDA < > >;
diff --git a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp
index 71d5cc4e2dde46f28814d20408e974ad618e80b7..882b9c5d1802b2a788d63c77c05f39ece0130559 100644
--- a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp
+++ b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::ArcFactoredDeterministicZAutomaton < >;
 template class registration::DenormalizationRegisterImpl < const automaton::ArcFactoredDeterministicZAutomaton < > & >;
+template class registration::NormalizationRegisterImpl < automaton::ArcFactoredDeterministicZAutomaton < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h
index 030cf0dff1c59518e36f396fb0a4e7ad7889fd80..84ce38ae9061b8aa5fb902fc8b66d0f08b8e18e9 100644
--- a/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h
+++ b/alib2data/src/automaton/TA/ArcFactoredDeterministicZAutomaton.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -694,3 +695,4 @@ struct type_details_retriever < automaton::ArcFactoredDeterministicZAutomaton <
 
 extern template class automaton::ArcFactoredDeterministicZAutomaton < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::ArcFactoredDeterministicZAutomaton < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::ArcFactoredDeterministicZAutomaton < > >;
diff --git a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp
index 8a473f93f8bff28a2616ebd6ddc34855a58b86c8..f471ab769f306ceab65f26829dc5b8e863e24beb 100644
--- a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp
+++ b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::ArcFactoredNondeterministicZAutomaton < >;
 template class registration::DenormalizationRegisterImpl < const automaton::ArcFactoredNondeterministicZAutomaton < > & >;
+template class registration::NormalizationRegisterImpl < automaton::ArcFactoredNondeterministicZAutomaton < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h
index 184e6e2e69e4abac8d5212d03a5d4af045e54e80..d12c1d15c8a9d696874ce5782213e2b15b38ed0d 100644
--- a/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h
+++ b/alib2data/src/automaton/TA/ArcFactoredNondeterministicZAutomaton.h
@@ -41,6 +41,7 @@
 #include "ArcFactoredDeterministicZAutomaton.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -707,3 +708,4 @@ struct type_details_retriever < automaton::ArcFactoredNondeterministicZAutomaton
 
 extern template class automaton::ArcFactoredNondeterministicZAutomaton < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::ArcFactoredNondeterministicZAutomaton < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::ArcFactoredNondeterministicZAutomaton < > >;
diff --git a/alib2data/src/automaton/TA/DFTA.cpp b/alib2data/src/automaton/TA/DFTA.cpp
index 303652cde95468e9574fed92266c528a709a5874..b18f7950cd1ef3e105f90c09e07b7d2826b06397 100644
--- a/alib2data/src/automaton/TA/DFTA.cpp
+++ b/alib2data/src/automaton/TA/DFTA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::DFTA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::DFTA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::DFTA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h
index 1665b78fd0218d092a474eaa22182b0cade24d9b..cec463b4b89c259b8f1acd74a84ea95d955069ee 100644
--- a/alib2data/src/automaton/TA/DFTA.h
+++ b/alib2data/src/automaton/TA/DFTA.h
@@ -40,6 +40,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -671,3 +672,4 @@ struct type_details_retriever < automaton::DFTA < SymbolType, StateType > > {
 
 extern template class automaton::DFTA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::DFTA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::DFTA < > >;
diff --git a/alib2data/src/automaton/TA/EpsilonNFTA.cpp b/alib2data/src/automaton/TA/EpsilonNFTA.cpp
index 5bac632991cb895a29c483f5f5e7f27825b8cbc4..de0968341d5bb7239a2380d6ec0dac8effa9176a 100644
--- a/alib2data/src/automaton/TA/EpsilonNFTA.cpp
+++ b/alib2data/src/automaton/TA/EpsilonNFTA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::EpsilonNFTA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::EpsilonNFTA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::EpsilonNFTA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TA/EpsilonNFTA.h b/alib2data/src/automaton/TA/EpsilonNFTA.h
index ce769375e7f7ec9dfbd59dfa399afd6a12505229..9cc805697152ed9f311e10fafea404d1f1d6b772 100644
--- a/alib2data/src/automaton/TA/EpsilonNFTA.h
+++ b/alib2data/src/automaton/TA/EpsilonNFTA.h
@@ -42,6 +42,7 @@
 #include "NFTA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -926,3 +927,4 @@ struct type_details_retriever < automaton::EpsilonNFTA < SymbolType, StateType >
 
 extern template class automaton::EpsilonNFTA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::EpsilonNFTA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::EpsilonNFTA < > >;
diff --git a/alib2data/src/automaton/TA/ExtendedNFTA.cpp b/alib2data/src/automaton/TA/ExtendedNFTA.cpp
index c5f8946a25a7ae91b5e2a32b156c99f1c2a7fde3..7e6a9931aa07b775c62b1cc9382824ee13bc53bf 100644
--- a/alib2data/src/automaton/TA/ExtendedNFTA.cpp
+++ b/alib2data/src/automaton/TA/ExtendedNFTA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::ExtendedNFTA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::ExtendedNFTA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::ExtendedNFTA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TA/ExtendedNFTA.h b/alib2data/src/automaton/TA/ExtendedNFTA.h
index 077c9036fd6f74cf96913da8b30ef27f60c9e16e..58282c4fa146a6a76923f380ee79b0a4f124bb62 100644
--- a/alib2data/src/automaton/TA/ExtendedNFTA.h
+++ b/alib2data/src/automaton/TA/ExtendedNFTA.h
@@ -45,6 +45,7 @@
 #include "NFTA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -744,3 +745,4 @@ struct type_details_retriever < automaton::ExtendedNFTA < SymbolType, StateType
 
 extern template class automaton::ExtendedNFTA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::ExtendedNFTA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::ExtendedNFTA < > >;
diff --git a/alib2data/src/automaton/TA/NFTA.cpp b/alib2data/src/automaton/TA/NFTA.cpp
index 69ac5da3d4c31fb08a9898c3022978b3b6b58e84..9089760a30a0ff58246a38bf9d27991999b92efb 100644
--- a/alib2data/src/automaton/TA/NFTA.cpp
+++ b/alib2data/src/automaton/TA/NFTA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::NFTA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::NFTA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::NFTA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h
index 5bcf48e1d680a39712993a999df569c88d7d1b9f..610042754d09257c1c13c51a28ca1e31a261b3ad 100644
--- a/alib2data/src/automaton/TA/NFTA.h
+++ b/alib2data/src/automaton/TA/NFTA.h
@@ -41,6 +41,7 @@
 #include "DFTA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -697,3 +698,4 @@ struct type_details_retriever < automaton::NFTA < SymbolType, StateType > > {
 
 extern template class automaton::NFTA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NFTA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::NFTA < > >;
diff --git a/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp b/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp
index 34f0dd97b4099b947f982978dc74d3686b062867..ed11fff975cdb126ab864fcbbb0844c78a09c8b5 100644
--- a/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp
+++ b/alib2data/src/automaton/TA/NondeterministicZAutomaton.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::NondeterministicZAutomaton < >;
 template class registration::DenormalizationRegisterImpl < const automaton::NondeterministicZAutomaton < > & >;
+template class registration::NormalizationRegisterImpl < automaton::NondeterministicZAutomaton < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TA/NondeterministicZAutomaton.h b/alib2data/src/automaton/TA/NondeterministicZAutomaton.h
index f2bbfda05752a6aedd22aec6ab48cb41c1746b15..6ae5ed04d0ab618dd0b8b24ad6b9353efcd62f52 100644
--- a/alib2data/src/automaton/TA/NondeterministicZAutomaton.h
+++ b/alib2data/src/automaton/TA/NondeterministicZAutomaton.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -636,3 +637,4 @@ struct type_details_retriever < automaton::NondeterministicZAutomaton < SymbolTy
 
 extern template class automaton::NondeterministicZAutomaton < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::NondeterministicZAutomaton < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::NondeterministicZAutomaton < > >;
diff --git a/alib2data/src/automaton/TA/UnorderedDFTA.cpp b/alib2data/src/automaton/TA/UnorderedDFTA.cpp
index 53dffaffe9a657473007633ab3657ecd8984f3ae..1e0ecfea12c757bc02400d16356fea8ef30f7f3a 100644
--- a/alib2data/src/automaton/TA/UnorderedDFTA.cpp
+++ b/alib2data/src/automaton/TA/UnorderedDFTA.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::UnorderedDFTA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::UnorderedDFTA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::UnorderedDFTA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TA/UnorderedDFTA.h b/alib2data/src/automaton/TA/UnorderedDFTA.h
index dbeb1f455eb1bdf342b7a79b95231cadbcbb0c4a..d22e172f36944bfb9d92b8361cc3add1575eba85 100644
--- a/alib2data/src/automaton/TA/UnorderedDFTA.h
+++ b/alib2data/src/automaton/TA/UnorderedDFTA.h
@@ -40,6 +40,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -669,3 +670,4 @@ struct type_details_retriever < automaton::UnorderedDFTA < SymbolType, StateType
 
 extern template class automaton::UnorderedDFTA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::UnorderedDFTA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::UnorderedDFTA < > >;
diff --git a/alib2data/src/automaton/TA/UnorderedNFTA.cpp b/alib2data/src/automaton/TA/UnorderedNFTA.cpp
index 3b43fd911ef18d9a43de3848bcdda0fd82baee4c..b3418d0056957a84d28290fe1582f1663b1c73c4 100644
--- a/alib2data/src/automaton/TA/UnorderedNFTA.cpp
+++ b/alib2data/src/automaton/TA/UnorderedNFTA.cpp
@@ -5,6 +5,7 @@
 
 template class automaton::UnorderedNFTA < >;
 template class registration::DenormalizationRegisterImpl < const automaton::UnorderedNFTA < > & >;
+template class registration::NormalizationRegisterImpl < automaton::UnorderedNFTA < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TA/UnorderedNFTA.h b/alib2data/src/automaton/TA/UnorderedNFTA.h
index a84950e9595b978dd44f1dfc9d03c4777cf64a49..5f41f58f553c6aaa6c250253a97683d9a05e8c89 100644
--- a/alib2data/src/automaton/TA/UnorderedNFTA.h
+++ b/alib2data/src/automaton/TA/UnorderedNFTA.h
@@ -41,6 +41,7 @@
 #include "UnorderedDFTA.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -697,3 +698,4 @@ struct type_details_retriever < automaton::UnorderedNFTA < SymbolType, StateType
 
 extern template class automaton::UnorderedNFTA < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::UnorderedNFTA < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::UnorderedNFTA < > >;
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.cpp b/alib2data/src/automaton/TM/OneTapeDTM.cpp
index 30edc33755b9142d8293def177e535eec71d4b00..aa92b4f3623be40c14e1d5f1e7305f7cdd84bcec 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.cpp
+++ b/alib2data/src/automaton/TM/OneTapeDTM.cpp
@@ -4,6 +4,7 @@
 
 template class automaton::OneTapeDTM < >;
 template class registration::DenormalizationRegisterImpl < const automaton::OneTapeDTM < > & >;
+template class registration::NormalizationRegisterImpl < automaton::OneTapeDTM < > >;
 
 namespace {
 
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h
index 7dc5e84720eb29913bbdaf1f7524355689478088..678b0901b71d5deca6e083c0c10e33e74735c193 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/TM/OneTapeDTM.h
@@ -39,6 +39,7 @@
 #include <automaton/common/AutomatonDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace automaton {
 
@@ -880,3 +881,4 @@ struct type_details_retriever < automaton::OneTapeDTM < SymbolType, StateType >
 
 extern template class automaton::OneTapeDTM < >;
 extern template class registration::DenormalizationRegisterImpl < const automaton::OneTapeDTM < > & >;
+extern template class registration::NormalizationRegisterImpl < automaton::OneTapeDTM < > >;
diff --git a/alib2data/src/grammar/ContextFree/CFG.cpp b/alib2data/src/grammar/ContextFree/CFG.cpp
index 64cd8b74905a71741da5c7adf69d1f09a40ea635..bcbc6dd43f7f1f0dfe35906acbeb1aba4c3c4067 100644
--- a/alib2data/src/grammar/ContextFree/CFG.cpp
+++ b/alib2data/src/grammar/ContextFree/CFG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::CFG < >;
 template class registration::DenormalizationRegisterImpl < const grammar::CFG < > & >;
+template class registration::NormalizationRegisterImpl < grammar::CFG < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h
index 40ac402ea73cf2c10bb7152c73806c8ca400e15f..bbb26feb8136410ee7195ec73e183611972e69fd 100644
--- a/alib2data/src/grammar/ContextFree/CFG.h
+++ b/alib2data/src/grammar/ContextFree/CFG.h
@@ -38,6 +38,7 @@
 #include "EpsilonFreeCFG.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -567,3 +568,4 @@ struct type_details_retriever < grammar::CFG < TerminalSymbolType, NonterminalSy
 
 extern template class grammar::CFG < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::CFG < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::CFG < > >;
diff --git a/alib2data/src/grammar/ContextFree/CNF.cpp b/alib2data/src/grammar/ContextFree/CNF.cpp
index 2ef3b9bdb5438c3bda5d64a8aca7a1766ef99bdc..f5383a4388d4ad29b13d9b15e45d93f133ba6f58 100644
--- a/alib2data/src/grammar/ContextFree/CNF.cpp
+++ b/alib2data/src/grammar/ContextFree/CNF.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::CNF < >;
 template class registration::DenormalizationRegisterImpl < const grammar::CNF < > & >;
+template class registration::NormalizationRegisterImpl < grammar::CNF < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h
index 73f874d357465881c67b7d65d32c94644e3a3790..b8929b598aa949af307d4cd1edb4357a9a7e4e7b 100644
--- a/alib2data/src/grammar/ContextFree/CNF.h
+++ b/alib2data/src/grammar/ContextFree/CNF.h
@@ -39,6 +39,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -642,3 +643,4 @@ struct type_details_retriever < grammar::CNF < TerminalSymbolType, NonterminalSy
 
 extern template class grammar::CNF < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::CNF < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::CNF < > >;
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
index dbe64e7f78baa5ed3a74c4bdc4a782361fdb82f9..9e312ce39655815a86d085d78111a9ce5983881f 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::EpsilonFreeCFG < >;
 template class registration::DenormalizationRegisterImpl < const grammar::EpsilonFreeCFG < > & >;
+template class registration::NormalizationRegisterImpl < grammar::EpsilonFreeCFG < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
index 16553b86a60a8ef187ecc0dc3bfc9d8fa15acfd4..76e40b3bfc832038180fffd62686caf0fd174089 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
@@ -36,6 +36,7 @@
 #include <alphabet/common/SymbolDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -594,3 +595,4 @@ struct type_details_retriever < grammar::EpsilonFreeCFG < TerminalSymbolType, No
 
 extern template class grammar::EpsilonFreeCFG < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::EpsilonFreeCFG < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::EpsilonFreeCFG < > >;
diff --git a/alib2data/src/grammar/ContextFree/GNF.cpp b/alib2data/src/grammar/ContextFree/GNF.cpp
index 96802c4a2925c34e12260b9bd85d1aca020b9875..d4665f3cf5b45644f575c1054cbb85aca40b14bc 100644
--- a/alib2data/src/grammar/ContextFree/GNF.cpp
+++ b/alib2data/src/grammar/ContextFree/GNF.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::GNF < >;
 template class registration::DenormalizationRegisterImpl < const grammar::GNF < > & >;
+template class registration::NormalizationRegisterImpl < grammar::GNF < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h
index 9b9799d1ae62f2c1725753984dd070f08829d8c7..658061d78897d828806dd3ee43646cc06833db2d 100644
--- a/alib2data/src/grammar/ContextFree/GNF.h
+++ b/alib2data/src/grammar/ContextFree/GNF.h
@@ -38,6 +38,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -594,3 +595,4 @@ struct type_details_retriever < grammar::GNF < TerminalSymbolType, NonterminalSy
 
 extern template class grammar::GNF < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::GNF < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::GNF < > >;
diff --git a/alib2data/src/grammar/ContextFree/LG.cpp b/alib2data/src/grammar/ContextFree/LG.cpp
index 3c43064521ec441f8610a6ddfe63d6a865457044..0f9d52abadaf45b37d7b4fb300a53a9d20d69ad6 100644
--- a/alib2data/src/grammar/ContextFree/LG.cpp
+++ b/alib2data/src/grammar/ContextFree/LG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::LG < >;
 template class registration::DenormalizationRegisterImpl < const grammar::LG < > & >;
+template class registration::NormalizationRegisterImpl < grammar::LG < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h
index 1ef74fd0631cb39cc47af63d16f0bc3e3fc83254..9a7cf9e1c5ca3d9dfe89f7c84d0a0546e02b989d 100644
--- a/alib2data/src/grammar/ContextFree/LG.h
+++ b/alib2data/src/grammar/ContextFree/LG.h
@@ -40,6 +40,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -643,3 +644,4 @@ struct type_details_retriever < grammar::LG < TerminalSymbolType, NonterminalSym
 
 extern template class grammar::LG < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::LG < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::LG < > >;
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.cpp b/alib2data/src/grammar/ContextSensitive/CSG.cpp
index 5fb770335f6302718c8e8a5758efe52b009672bb..1259584d2d778e1d8bba081d4d9cf7e40bfcc46d 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.cpp
+++ b/alib2data/src/grammar/ContextSensitive/CSG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::CSG < >;
 template class registration::DenormalizationRegisterImpl < const grammar::CSG < > & >;
+template class registration::NormalizationRegisterImpl < grammar::CSG < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h
index 0d04c8218720a615f8d356dc4bb842fb7e55531b..cede910a89619392219907fb3c14f60732c52938 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/ContextSensitive/CSG.h
@@ -39,6 +39,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -623,3 +624,4 @@ struct type_details_retriever < grammar::CSG < SymbolType > > {
 
 extern template class grammar::CSG < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::CSG < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::CSG < > >;
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
index e9bdf0974a4756c27eb977756d21f19776f27a39..ad1aeb1fd3a47bc9151dcbf31bbcf1d45667a54c 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::NonContractingGrammar < >;
 template class registration::DenormalizationRegisterImpl < const grammar::NonContractingGrammar < > & >;
+template class registration::NormalizationRegisterImpl < grammar::NonContractingGrammar < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
index 5389e4d1775dd642ec1b3d1f34dfa46df40c0e16..59bb89601a5349531912d0bd081c265dcc32d8de 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
@@ -39,6 +39,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -616,3 +617,4 @@ struct type_details_retriever < grammar::NonContractingGrammar < SymbolType > >
 
 extern template class grammar::NonContractingGrammar < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::NonContractingGrammar < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::NonContractingGrammar < > >;
diff --git a/alib2data/src/grammar/Regular/LeftLG.cpp b/alib2data/src/grammar/Regular/LeftLG.cpp
index d92c65b5d18cb0b4b74c3a860dbce3f8842d6501..982af50878765529056b4945057efa95847b9a51 100644
--- a/alib2data/src/grammar/Regular/LeftLG.cpp
+++ b/alib2data/src/grammar/Regular/LeftLG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::LeftLG < >;
 template class registration::DenormalizationRegisterImpl < const grammar::LeftLG < > & >;
+template class registration::NormalizationRegisterImpl < grammar::LeftLG < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h
index bad69c73f7fc7121e8489c5756bd70825949a124..87431f95424bf868424c229e547fa32dce83ba29 100644
--- a/alib2data/src/grammar/Regular/LeftLG.h
+++ b/alib2data/src/grammar/Regular/LeftLG.h
@@ -39,6 +39,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -625,3 +626,4 @@ struct type_details_retriever < grammar::LeftLG < TerminalSymbolType, Nontermina
 
 extern template class grammar::LeftLG < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::LeftLG < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::LeftLG < > >;
diff --git a/alib2data/src/grammar/Regular/LeftRG.cpp b/alib2data/src/grammar/Regular/LeftRG.cpp
index ad374e06c8866fbc94ddd9431629d55b8ed67cee..dda36f7890b3f969f06dfdb0dd3f97e452325f1a 100644
--- a/alib2data/src/grammar/Regular/LeftRG.cpp
+++ b/alib2data/src/grammar/Regular/LeftRG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::LeftRG < >;
 template class registration::DenormalizationRegisterImpl < const grammar::LeftRG < > & >;
+template class registration::NormalizationRegisterImpl < grammar::LeftRG < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h
index 2acbbf8ca7369121b3c495864bea3f5f88b71556..57e1c8f45b2b2d80c2503c6fa1706be891c0e23d 100644
--- a/alib2data/src/grammar/Regular/LeftRG.h
+++ b/alib2data/src/grammar/Regular/LeftRG.h
@@ -39,6 +39,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -641,3 +642,4 @@ struct type_details_retriever < grammar::LeftRG < TerminalSymbolType, Nontermina
 
 extern template class grammar::LeftRG < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::LeftRG < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::LeftRG < > >;
diff --git a/alib2data/src/grammar/Regular/RightLG.cpp b/alib2data/src/grammar/Regular/RightLG.cpp
index 58af15c48b3bbe834bb46de3fb9f7de880cb2016..a33a23d37622de7299e9d3f1bef3acdcc7a42764 100644
--- a/alib2data/src/grammar/Regular/RightLG.cpp
+++ b/alib2data/src/grammar/Regular/RightLG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::RightLG < >;
 template class registration::DenormalizationRegisterImpl < const grammar::RightLG < > & >;
+template class registration::NormalizationRegisterImpl < grammar::RightLG < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h
index ff78850b83a558e0debeb020ddab44b2171d0e65..0092f2140d20e6c4f1f529ff3a61a2e7e2b4fdb4 100644
--- a/alib2data/src/grammar/Regular/RightLG.h
+++ b/alib2data/src/grammar/Regular/RightLG.h
@@ -39,6 +39,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -622,3 +623,4 @@ struct type_details_retriever < grammar::RightLG < TerminalSymbolType, Nontermin
 
 extern template class grammar::RightLG < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::RightLG < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::RightLG < > >;
diff --git a/alib2data/src/grammar/Regular/RightRG.cpp b/alib2data/src/grammar/Regular/RightRG.cpp
index 0dc60ecccf9aa390870bf85615e5b8a4e1e084c1..da1676c4a7c4a603a806a730918476d07816db86 100644
--- a/alib2data/src/grammar/Regular/RightRG.cpp
+++ b/alib2data/src/grammar/Regular/RightRG.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::RightRG < >;
 template class registration::DenormalizationRegisterImpl < const grammar::RightRG < > & >;
+template class registration::NormalizationRegisterImpl < grammar::RightRG < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h
index 9d648f1b16078d93f0f8d8547300fb8d95940132..2d1a82b6af9c7d9fda7777520be79e700f5edb6e 100644
--- a/alib2data/src/grammar/Regular/RightRG.h
+++ b/alib2data/src/grammar/Regular/RightRG.h
@@ -39,6 +39,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -640,3 +641,4 @@ struct type_details_retriever < grammar::RightRG < TerminalSymbolType, Nontermin
 
 extern template class grammar::RightRG < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::RightRG < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::RightRG < > >;
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
index b1771d4b0e0f8cea73d451b025e40ef91c1183a1..bab470a32d8a571487085c70e20d134178bfe4c0 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::ContextPreservingUnrestrictedGrammar < >;
 template class registration::DenormalizationRegisterImpl < const grammar::ContextPreservingUnrestrictedGrammar < > & >;
+template class registration::NormalizationRegisterImpl < grammar::ContextPreservingUnrestrictedGrammar < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
index 18ffebdd82847bdebe1a811bd6bad73666d8596d..b83a646a852071da06cc390a5dde4ddca5f18aec 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -38,6 +38,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -592,3 +593,4 @@ struct type_details_retriever < grammar::ContextPreservingUnrestrictedGrammar <
 
 extern template class grammar::ContextPreservingUnrestrictedGrammar < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::ContextPreservingUnrestrictedGrammar < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::ContextPreservingUnrestrictedGrammar < > >;
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
index 8da2ae7e953c6b7f7c2da2cd29b38172f8dc0dbc..5fc178f0cd39c743eeb1925cff29153c6512c15e 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.cpp
@@ -5,6 +5,7 @@
 
 template class grammar::UnrestrictedGrammar < >;
 template class registration::DenormalizationRegisterImpl < const grammar::UnrestrictedGrammar < > & >;
+template class registration::NormalizationRegisterImpl < grammar::UnrestrictedGrammar < > >;
 
 namespace {
 
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
index 2384469aa41c13ff7d2256a20d46d065e2ae24f1..56e116dbbdd219e2c338a807e3387da32b5b80c5 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
@@ -38,6 +38,7 @@
 #include <grammar/common/GrammarDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace grammar {
 
@@ -589,3 +590,4 @@ struct type_details_retriever < grammar::UnrestrictedGrammar < SymbolType > > {
 
 extern template class grammar::UnrestrictedGrammar < >;
 extern template class registration::DenormalizationRegisterImpl < const grammar::UnrestrictedGrammar < > & >;
+extern template class registration::NormalizationRegisterImpl < grammar::UnrestrictedGrammar < > >;
diff --git a/alib2data/src/regexp/formal/FormalRegExp.cpp b/alib2data/src/regexp/formal/FormalRegExp.cpp
index 7e46b69230ff154f4fb55eeebc97c3d73b9fc2c4..553aba7066ea062dc879e37480b91e1da81662a3 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.cpp
+++ b/alib2data/src/regexp/formal/FormalRegExp.cpp
@@ -6,6 +6,7 @@
 
 template class regexp::FormalRegExp < >;
 template class registration::DenormalizationRegisterImpl < const regexp::FormalRegExp < > & >;
+template class registration::NormalizationRegisterImpl < regexp::FormalRegExp < > >;
 template class regexp::FormalRegExpStructure < DefaultSymbolType >;
 template class regexp::FormalRegExpElement < DefaultSymbolType >;
 template class regexp::FormalRegExpAlternation < DefaultSymbolType >;
diff --git a/alib2data/src/regexp/formal/FormalRegExp.h b/alib2data/src/regexp/formal/FormalRegExp.h
index 0f07e04cbdb7c0f3601344b9e76e228c818cdaa7..67f6586196f1ba5c37042c613b2b3ed58c67f7cc 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.h
+++ b/alib2data/src/regexp/formal/FormalRegExp.h
@@ -45,6 +45,7 @@ class FormalRegExp;
 #include <regexp/common/RegExpNormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace regexp {
 
@@ -309,3 +310,4 @@ struct type_details_retriever < regexp::FormalRegExp < SymbolType > > {
 
 extern template class regexp::FormalRegExp < >;
 extern template class registration::DenormalizationRegisterImpl < const regexp::FormalRegExp < > & >;
+extern template class registration::NormalizationRegisterImpl < regexp::FormalRegExp < > >;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
index f2d800b59571366e124a385c9d9746e1ffe6b133..08a00458b5c19595cce475ab16f91b918cd16379 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.cpp
@@ -6,6 +6,7 @@
 
 template class regexp::UnboundedRegExp < >;
 template class registration::DenormalizationRegisterImpl < const regexp::UnboundedRegExp < > & >;
+template class registration::NormalizationRegisterImpl < regexp::UnboundedRegExp < > >;
 
 template class regexp::UnboundedRegExpStructure < DefaultSymbolType >;
 template class regexp::UnboundedRegExpElement < DefaultSymbolType >;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.h b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
index 4dea3cbc6fbd9a3e3535111211516fb98211d88a..52015009a9bbf3e9e96a6efba6846713437c47f3 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
@@ -45,6 +45,7 @@ class UnboundedRegExp;
 #include <regexp/common/RegExpNormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace regexp {
 
@@ -311,3 +312,4 @@ struct type_details_retriever < regexp::UnboundedRegExp < SymbolType > > {
 
 extern template class regexp::UnboundedRegExp < >;
 extern template class registration::DenormalizationRegisterImpl < const regexp::UnboundedRegExp < > & >;
+extern template class registration::NormalizationRegisterImpl < regexp::UnboundedRegExp < > >;
diff --git a/alib2data/src/rte/formal/FormalRTE.cpp b/alib2data/src/rte/formal/FormalRTE.cpp
index bed308595849aa9ca96243da2969e3e72cbc59d9..909a5ee23613b1779413e08a2d0896ebbde7db5e 100644
--- a/alib2data/src/rte/formal/FormalRTE.cpp
+++ b/alib2data/src/rte/formal/FormalRTE.cpp
@@ -5,6 +5,7 @@
 
 template class rte::FormalRTE < >;
 template class registration::DenormalizationRegisterImpl < const rte::FormalRTE < > & >;
+template class registration::NormalizationRegisterImpl < rte::FormalRTE < > >;
 template class rte::FormalRTEStructure < DefaultSymbolType >;
 template class rte::FormalRTEElement < DefaultSymbolType >;
 template class rte::FormalRTEAlternation < DefaultSymbolType >;
diff --git a/alib2data/src/rte/formal/FormalRTE.h b/alib2data/src/rte/formal/FormalRTE.h
index 40db4ef5ecbd55ea1a2723f68f7cd6a84846f97a..394aa1e37d89999f6a974ef63d26222a1ae9efab 100644
--- a/alib2data/src/rte/formal/FormalRTE.h
+++ b/alib2data/src/rte/formal/FormalRTE.h
@@ -39,6 +39,7 @@
 #include <rte/common/RTEDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace rte {
 
@@ -449,3 +450,4 @@ struct type_details_retriever < rte::FormalRTE < SymbolType > > {
 
 extern template class rte::FormalRTE < >;
 extern template class registration::DenormalizationRegisterImpl < const rte::FormalRTE < > & >;
+extern template class registration::NormalizationRegisterImpl < rte::FormalRTE < > >;
diff --git a/alib2data/src/string/CyclicString.cpp b/alib2data/src/string/CyclicString.cpp
index ae022a86335782b641a8508e9a63157e9653f98c..90a87ac5ed8de94c618f93f71f562e72115404f4 100644
--- a/alib2data/src/string/CyclicString.cpp
+++ b/alib2data/src/string/CyclicString.cpp
@@ -5,6 +5,7 @@
 
 template class string::CyclicString < >;
 template class registration::DenormalizationRegisterImpl < const string::CyclicString < > & >;
+template class registration::NormalizationRegisterImpl < string::CyclicString < > >;
 
 namespace {
 
diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h
index c7c7117492795359d12e11ddebcdabb1a0783b68..a173682037c5f9ac59ee9095946ad9a403a5efcf 100644
--- a/alib2data/src/string/CyclicString.h
+++ b/alib2data/src/string/CyclicString.h
@@ -38,6 +38,7 @@
 #include <alphabet/common/SymbolDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace string {
 
@@ -341,3 +342,4 @@ struct type_details_retriever < string::CyclicString < SymbolType > > {
 
 extern template class string::CyclicString < >;
 extern template class registration::DenormalizationRegisterImpl < const string::CyclicString < > & >;
+extern template class registration::NormalizationRegisterImpl < string::CyclicString < > >;
diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp
index 781bd68099f10512c7f8d38d7c24733e589b59c3..9b8762556e05842e3add804b4c81d307b66f7111 100644
--- a/alib2data/src/string/LinearString.cpp
+++ b/alib2data/src/string/LinearString.cpp
@@ -6,6 +6,7 @@
 
 template class string::LinearString < >;
 template class registration::DenormalizationRegisterImpl < const string::LinearString < > & >;
+template class registration::NormalizationRegisterImpl < string::LinearString < > >;
 
 namespace {
 
diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h
index b2bd511bbd262b34c5f140accaee385cc301c62e..5f91a65d4efd72eedc8e4d1cb480d012ac54eeb9 100644
--- a/alib2data/src/string/LinearString.h
+++ b/alib2data/src/string/LinearString.h
@@ -38,6 +38,7 @@
 #include <alphabet/common/SymbolDenormalize.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace string {
 
@@ -363,3 +364,4 @@ struct type_details_retriever < string::LinearString < SymbolType > > {
 
 extern template class string::LinearString < >;
 extern template class registration::DenormalizationRegisterImpl < const string::LinearString < > & >;
+extern template class registration::NormalizationRegisterImpl < string::LinearString < > >;
diff --git a/alib2data/src/string/WildcardLinearString.cpp b/alib2data/src/string/WildcardLinearString.cpp
index 5cd4873c606e5034a2337fed1550318f9163287f..40f9d91cccaf08c4b8b624b367a5ce72a4259a96 100644
--- a/alib2data/src/string/WildcardLinearString.cpp
+++ b/alib2data/src/string/WildcardLinearString.cpp
@@ -6,6 +6,7 @@
 
 template class string::WildcardLinearString < >;
 template class registration::DenormalizationRegisterImpl < const string::WildcardLinearString < > & >;
+template class registration::NormalizationRegisterImpl < string::WildcardLinearString < > >;
 
 namespace {
 
diff --git a/alib2data/src/string/WildcardLinearString.h b/alib2data/src/string/WildcardLinearString.h
index 2af0296a7686703816b018bd4441bb6235ccb4b2..c13b775cd94e2d72216ec84909fe459459d29b4c 100644
--- a/alib2data/src/string/WildcardLinearString.h
+++ b/alib2data/src/string/WildcardLinearString.h
@@ -22,6 +22,7 @@
 #include "LinearString.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace string {
 
@@ -430,3 +431,4 @@ struct type_details_retriever < string::WildcardLinearString < SymbolType > > {
 
 extern template class string::WildcardLinearString < >;
 extern template class registration::DenormalizationRegisterImpl < const string::WildcardLinearString < > & >;
+extern template class registration::NormalizationRegisterImpl < string::WildcardLinearString < > >;
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.cpp b/alib2data/src/tree/ranked/PostfixRankedTree.cpp
index 038bd72658dfcb5a12984d96d12d875f60d6acef..c667a374f059c7b543abd52a15decaa7adb724b8 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PostfixRankedTree < >;
 template class registration::DenormalizationRegisterImpl < const tree::PostfixRankedTree < > & >;
+template class registration::NormalizationRegisterImpl < tree::PostfixRankedTree < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.h b/alib2data/src/tree/ranked/PostfixRankedTree.h
index f62c67423ba1db2c4bac41e6133b0c410c75acc1..53af8abe3211e4ee0cbddbb6bb263bc685d3df4c 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.h
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.h
@@ -54,6 +54,7 @@ class PostfixRankedTree;
 #include "RankedTree.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -350,3 +351,4 @@ struct type_details_retriever < tree::PostfixRankedTree < SymbolType > > {
 
 extern template class tree::PostfixRankedTree < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PostfixRankedTree < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::PostfixRankedTree < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
index a5c37ac884c301fc4f34a39e0cbd9ba6268ad222..667bc8cc927d5744207dff133b47eec9883cf27e 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedBarNonlinearPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarNonlinearPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarNonlinearPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index bed8e888676acc78c4ae1364a5cfc6c885666c6a..eaf15ed5e65495e66dadfc12b7b3f3682465df52 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -62,6 +62,7 @@ class PrefixRankedBarNonlinearPattern;
 #include "RankedNonlinearPattern.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -744,3 +745,4 @@ struct type_details_retriever < tree::PrefixRankedBarNonlinearPattern < SymbolTy
 
 extern template class tree::PrefixRankedBarNonlinearPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarNonlinearPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarNonlinearPattern < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
index 892147b2a05bdfcc80be80b936da0ebb8fe211d5..999b90ba8928e3bbeb528662570f91aa493a38fa 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedBarPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index ce78dc759ac628c4e5fbde14b3fa712bf68fa13b..31b74e2f5dec1666957ef8b44fd782a9783132fa 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -57,6 +57,7 @@ class PrefixRankedBarPattern;
 #include "PrefixRankedBarTree.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -586,3 +587,4 @@ struct type_details_retriever < tree::PrefixRankedBarPattern < SymbolType > > {
 
 extern template class tree::PrefixRankedBarPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < const tree::PrefixRankedBarPattern < > & >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
index 77f932bae5197880e75aa18c810da174d2378bc8..6c34da21350bfc12e44a73c7b6d5d07a896e8748 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedBarTree < >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarTree < > & >;
+template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarTree < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index 6fcf409927981d40dd330121bebb478c7be8ae80..16192dd4410220d8024becfcd25d55e6e3221bbd 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -54,6 +54,7 @@ class PrefixRankedBarTree;
 #include "RankedTree.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -451,3 +452,4 @@ struct type_details_retriever < tree::PrefixRankedBarTree < SymbolType > > {
 
 extern template class tree::PrefixRankedBarTree < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedBarTree < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedBarTree < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp
index b2f38274087a072c2eda2cbd90e9f8bfdf4c3b6a..158fd0ce1a986cbba8e2565da82a857af9bfc16b 100644
--- a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedExtendedPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedExtendedPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::PrefixRankedExtendedPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h
index 701fdaa10bb8323cc3b135d9abb15fc014b407e5..b6c874d12c1ab6701233dcdd086850a34289dcef 100644
--- a/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedExtendedPattern.h
@@ -53,6 +53,7 @@ class PrefixRankedExtendedPattern;
 #include "PrefixRankedPattern.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -496,3 +497,4 @@ struct type_details_retriever < tree::PrefixRankedExtendedPattern < SymbolType >
 
 extern template class tree::PrefixRankedExtendedPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedExtendedPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedExtendedPattern < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
index 45e4d2f16b1e31df997dbb5521507fa03c3bc542..6a84f61717cf3ffe86d1031aed7109fdde168014 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedNonlinearPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedNonlinearPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::PrefixRankedNonlinearPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index 1d86404ca136d34cef18ad9514ff050f0f521cf9..0e94954899b8890a24953e9182b8c8508d4cdf46 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -58,6 +58,7 @@ class PrefixRankedNonlinearPattern;
 #include "RankedNonlinearPattern.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -543,3 +544,4 @@ struct type_details_retriever < tree::PrefixRankedNonlinearPattern < SymbolType
 
 extern template class tree::PrefixRankedNonlinearPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedNonlinearPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedNonlinearPattern < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
index c2ca0d6cd4a5d0d8b78d293803a9130ed5ab9287..b0ab4fea25831f8c42df7be0853d5f742024b3db 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::PrefixRankedPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index c625e774e8d53493386c6f04012adbf1234b4eeb..3cd038d4706d9094da4708fa08a5eb839210c01b 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -55,6 +55,7 @@ class PrefixRankedPattern;
 #include "PrefixRankedTree.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -419,3 +420,4 @@ struct type_details_retriever < tree::PrefixRankedPattern < SymbolType > > {
 
 extern template class tree::PrefixRankedPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedPattern < > >;
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.cpp b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
index 35ef53a95a5d8127eff099a1e87fcd79dadee24a..972275888c400812357b792e77d2307e09d1134a 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.cpp
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixRankedTree < >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedTree < > & >;
+template class registration::NormalizationRegisterImpl < tree::PrefixRankedTree < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index 534a308a8ef7bee1f5b01d80f19baa08925a6e38..8b808e891e4672e5f7be5081bda3c9090f1f0fcd 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -51,6 +51,7 @@ class PrefixRankedTree;
 #include "RankedTree.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -357,3 +358,4 @@ struct type_details_retriever < tree::PrefixRankedTree < SymbolType > > {
 
 extern template class tree::PrefixRankedTree < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixRankedTree < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::PrefixRankedTree < > >;
diff --git a/alib2data/src/tree/ranked/RankedExtendedPattern.cpp b/alib2data/src/tree/ranked/RankedExtendedPattern.cpp
index 855cd34dd852bd0f818d7afd37a67390195def94..88e4cd3311ec9e5e2fde60e6d24556e07f11cefe 100644
--- a/alib2data/src/tree/ranked/RankedExtendedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedExtendedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::RankedExtendedPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::RankedExtendedPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::RankedExtendedPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/RankedExtendedPattern.h b/alib2data/src/tree/ranked/RankedExtendedPattern.h
index a12926f6abaadcde991d3e9d461a719c081d70ea..b3dc94cf9e49a5204cf8217e390a33c0d8163e18 100644
--- a/alib2data/src/tree/ranked/RankedExtendedPattern.h
+++ b/alib2data/src/tree/ranked/RankedExtendedPattern.h
@@ -51,6 +51,7 @@ class RankedExtendedPattern;
 #include "RankedPattern.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -492,3 +493,4 @@ struct type_details_retriever < tree::RankedExtendedPattern < SymbolType > > {
 
 extern template class tree::RankedExtendedPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::RankedExtendedPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::RankedExtendedPattern < > >;
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
index bc9c4966934d922bc21a45606a56c8ef4ccfe7a1..7705bc4219263c93fcee14cbcdb2fc7532281d39 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::RankedNonlinearPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::RankedNonlinearPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::RankedNonlinearPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index 75a9e302ef73b401afe9f6f9df612be96c15702e..d9585e38d94262a79aa8af21cddb24b69c512c5a 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -51,6 +51,7 @@ class RankedNonlinearPattern;
 #include "../unranked/UnrankedNonlinearPattern.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -501,3 +502,4 @@ struct type_details_retriever < tree::RankedNonlinearPattern < SymbolType > > {
 
 extern template class tree::RankedNonlinearPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::RankedNonlinearPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::RankedNonlinearPattern < > >;
diff --git a/alib2data/src/tree/ranked/RankedPattern.cpp b/alib2data/src/tree/ranked/RankedPattern.cpp
index c5466776b138907cb037adcc323b475f8193e328..30b1eac42012a5b491859f34115d3161393b3160 100644
--- a/alib2data/src/tree/ranked/RankedPattern.cpp
+++ b/alib2data/src/tree/ranked/RankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::RankedPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::RankedPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::RankedPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index 5dec0dc4cd176691c4e12ecddf98679f83894b05..8c73a689f82edfbefc4fe6802455feb0bc9084f5 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -51,6 +51,7 @@ class RankedPattern;
 #include "../unranked/UnrankedPattern.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -413,3 +414,4 @@ struct type_details_retriever < tree::RankedPattern < SymbolType > > {
 
 extern template class tree::RankedPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::RankedPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::RankedPattern < > >;
diff --git a/alib2data/src/tree/ranked/RankedTree.cpp b/alib2data/src/tree/ranked/RankedTree.cpp
index eb33245b0782edaaf8876d4e8d75416277baad62..9bc4c9c0363f6d942006e890beee91a644860191 100644
--- a/alib2data/src/tree/ranked/RankedTree.cpp
+++ b/alib2data/src/tree/ranked/RankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::RankedTree < >;
 template class registration::DenormalizationRegisterImpl < const tree::RankedTree < > & >;
+template class registration::NormalizationRegisterImpl < tree::RankedTree < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index 9931ce51a66976fc3a97060820a7b8b868cda2c2..17a490326cac5f572766971f995dcf5b98ee3f19 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -53,6 +53,7 @@ class RankedTree;
 #include "PrefixRankedTree.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -379,3 +380,4 @@ struct type_details_retriever < tree::RankedTree < SymbolType > > {
 
 extern template class tree::RankedTree < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::RankedTree < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::RankedTree < > >;
diff --git a/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp b/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp
index 36e9b7802368e5dc3e879dcc3301667b7ee63e2c..c346d716be273c4b48735b08a2acad80ed7cfc27 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp
+++ b/alib2data/src/tree/ranked/UnorderedRankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnorderedRankedPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::UnorderedRankedPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::UnorderedRankedPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/UnorderedRankedPattern.h b/alib2data/src/tree/ranked/UnorderedRankedPattern.h
index 7c2d496220b5de6ab5ff744cf4baf89d77f9981e..43f7af707b3123258e38b92326c93518bd5dec77 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedPattern.h
+++ b/alib2data/src/tree/ranked/UnorderedRankedPattern.h
@@ -51,6 +51,7 @@ class UnorderedRankedPattern;
 #include <tree/ranked/RankedPattern.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -413,3 +414,4 @@ struct type_details_retriever < tree::UnorderedRankedPattern < SymbolType > > {
 
 extern template class tree::UnorderedRankedPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnorderedRankedPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::UnorderedRankedPattern < > >;
diff --git a/alib2data/src/tree/ranked/UnorderedRankedTree.cpp b/alib2data/src/tree/ranked/UnorderedRankedTree.cpp
index 2b933c70b52f9baba2edaebb8885077de2e3f447..7e7e99dc4dc6c170fe43f0db0b386aab3551505d 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedTree.cpp
+++ b/alib2data/src/tree/ranked/UnorderedRankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnorderedRankedTree < >;
 template class registration::DenormalizationRegisterImpl < const tree::UnorderedRankedTree < > & >;
+template class registration::NormalizationRegisterImpl < tree::UnorderedRankedTree < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/ranked/UnorderedRankedTree.h b/alib2data/src/tree/ranked/UnorderedRankedTree.h
index 0d528cef80baadfa00b3fe8268d7593a478b9d10..3ad7f1b7d5b06a90cc88765f36f0a88c7a8fe0f8 100644
--- a/alib2data/src/tree/ranked/UnorderedRankedTree.h
+++ b/alib2data/src/tree/ranked/UnorderedRankedTree.h
@@ -51,6 +51,7 @@ class UnorderedRankedTree;
 #include <tree/ranked/RankedTree.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -355,3 +356,4 @@ struct type_details_retriever < tree::UnorderedRankedTree < SymbolType > > {
 
 extern template class tree::UnorderedRankedTree < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnorderedRankedTree < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::UnorderedRankedTree < > >;
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.cpp b/alib2data/src/tree/unranked/PrefixBarTree.cpp
index 006011dca4796c45da6f16c4a3c8f0f070781f7c..33441d39f46c36f5f57097f0dd8ad9bd6dcaca48 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.cpp
+++ b/alib2data/src/tree/unranked/PrefixBarTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::PrefixBarTree < >;
 template class registration::DenormalizationRegisterImpl < const tree::PrefixBarTree < > & >;
+template class registration::NormalizationRegisterImpl < tree::PrefixBarTree < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index 1b23b1bd51c1fa7433f19751cb3f59123fa54c02..ad336ca3be3f63dd0a07d87550f27e206f7bcc2e 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -54,6 +54,7 @@ class PrefixBarTree;
 #include <string/LinearString.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -422,3 +423,4 @@ struct type_details_retriever < tree::PrefixBarTree < SymbolType > > {
 
 extern template class tree::PrefixBarTree < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::PrefixBarTree < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::PrefixBarTree < > >;
diff --git a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp
index 70e153f5b1eacc5b74b80d76dbe90710ef0aa2eb..517329a4a2629c566a4da84e8285a1f3c76af0d5 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnorderedUnrankedPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::UnorderedUnrankedPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::UnorderedUnrankedPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h
index c45d1620576ae348a52a5e0f45c041f699305750..7e0fc4c14a480e76606bb5410167395ad4d42fee 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedPattern.h
@@ -50,6 +50,7 @@ class UnorderedUnrankedPattern;
 #include "UnrankedPattern.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -443,3 +444,4 @@ struct type_details_retriever < tree::UnorderedUnrankedPattern < SymbolType > >
 
 extern template class tree::UnorderedUnrankedPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnorderedUnrankedPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::UnorderedUnrankedPattern < > >;
diff --git a/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp b/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp
index 8bc384ed4ea6a41062b05e18a0944326f7a10978..d02c031e8e131bfac5122ae70bf96c08ed02ea54 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnorderedUnrankedTree < >;
 template class registration::DenormalizationRegisterImpl < const tree::UnorderedUnrankedTree < > & >;
+template class registration::NormalizationRegisterImpl < tree::UnorderedUnrankedTree < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/unranked/UnorderedUnrankedTree.h b/alib2data/src/tree/unranked/UnorderedUnrankedTree.h
index d838cd104a1d944fd2eb2b3ccc0c55d391d06f39..216359a43a033411a4de093d84773b62f41bf126 100644
--- a/alib2data/src/tree/unranked/UnorderedUnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnorderedUnrankedTree.h
@@ -50,6 +50,7 @@ class UnorderedUnrankedTree;
 #include "UnrankedTree.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -334,3 +335,4 @@ struct type_details_retriever < tree::UnorderedUnrankedTree < SymbolType > > {
 
 extern template class tree::UnorderedUnrankedTree < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnorderedUnrankedTree < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::UnorderedUnrankedTree < > >;
diff --git a/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp b/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp
index 1ffe74d6f4173b7144c11959212db8b417ade687..e4220e36eb537e2dd8555c6ade644a6e4d5b1faa 100644
--- a/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedExtendedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnrankedExtendedPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::UnrankedExtendedPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::UnrankedExtendedPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/unranked/UnrankedExtendedPattern.h b/alib2data/src/tree/unranked/UnrankedExtendedPattern.h
index b320cfd10a56c2424bc5736f4011aebaaa141737..42877dbf18fdd0ba9a0f4c06dc11f31567c2aee7 100644
--- a/alib2data/src/tree/unranked/UnrankedExtendedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedExtendedPattern.h
@@ -52,6 +52,7 @@ class UnrankedExtendedPattern;
 #include <alphabet/NodeWildcard.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -505,3 +506,4 @@ struct type_details_retriever < tree::UnrankedExtendedPattern < SymbolType > > {
 
 extern template class tree::UnrankedExtendedPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnrankedExtendedPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::UnrankedExtendedPattern < > >;
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
index 357cf6e32c2b81ba563a6e61bff7e62ee6b89207..a25c2dc701bb9d93cb64fb56e9e63e777c9931b3 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnrankedNonlinearPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::UnrankedNonlinearPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::UnrankedNonlinearPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index 13565c7c414d430eb0affaf5c09fb1cb300c7958..6270b45d2d72ee8ad5ee595c66d66c191b2bb307 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -51,6 +51,7 @@ class UnrankedNonlinearPattern;
 #include <alphabet/Gap.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -533,3 +534,4 @@ struct type_details_retriever < tree::UnrankedNonlinearPattern < SymbolType > >
 
 extern template class tree::UnrankedNonlinearPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnrankedNonlinearPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::UnrankedNonlinearPattern < > >;
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.cpp b/alib2data/src/tree/unranked/UnrankedPattern.cpp
index d071f2b374fc54ad2fdf0bae10529349a4557c1e..f6307138f636370c19e214e394f8e4c6ce270e27 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.cpp
+++ b/alib2data/src/tree/unranked/UnrankedPattern.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnrankedPattern < >;
 template class registration::DenormalizationRegisterImpl < const tree::UnrankedPattern < > & >;
+template class registration::NormalizationRegisterImpl < tree::UnrankedPattern < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index 491d30d3840a11b9d6cdf222e6784344d51f33f6..412587936a8da4a7820b4c88ef0f6ff62bf487ac 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -51,6 +51,7 @@ class UnrankedPattern;
 #include <alphabet/Gap.h>
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -446,3 +447,4 @@ struct type_details_retriever < tree::UnrankedPattern < SymbolType > > {
 
 extern template class tree::UnrankedPattern < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnrankedPattern < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::UnrankedPattern < > >;
diff --git a/alib2data/src/tree/unranked/UnrankedTree.cpp b/alib2data/src/tree/unranked/UnrankedTree.cpp
index c3cd676f8b00cf96181cc45879aa9d49a217e2f4..f3026c41fd15a3a50cf9cc7d47e7e4e1db215582 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.cpp
+++ b/alib2data/src/tree/unranked/UnrankedTree.cpp
@@ -6,6 +6,7 @@
 
 template class tree::UnrankedTree < >;
 template class registration::DenormalizationRegisterImpl < const tree::UnrankedTree < > & >;
+template class registration::NormalizationRegisterImpl < tree::UnrankedTree < > >;
 
 namespace {
 
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index ef5d01aa80513de9e92c1c1d5469b812d88c621b..d2618dff9973e52a2385db5aae086d914bfff4db 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -50,6 +50,7 @@ class UnrankedTree;
 #include "../ranked/RankedTree.h"
 
 #include <registration/DenormalizationRegistration.hpp>
+#include <registration/NormalizationRegistration.hpp>
 
 namespace tree {
 
@@ -334,3 +335,4 @@ struct type_details_retriever < tree::UnrankedTree < SymbolType > > {
 
 extern template class tree::UnrankedTree < >;
 extern template class registration::DenormalizationRegisterImpl < const tree::UnrankedTree < > & >;
+extern template class registration::NormalizationRegisterImpl < tree::UnrankedTree < > >;