diff --git a/alib2data/src/alphabet/SymbolBase.h b/alib2data/src/alphabet/SymbolBase.h
index 031a52ac77c148d130903f3bf69cdd55a93120d6..ee2959782f441e6f5a8c98e0e47d09b052821f48 100644
--- a/alib2data/src/alphabet/SymbolBase.h
+++ b/alib2data/src/alphabet/SymbolBase.h
@@ -21,6 +21,8 @@ public:
 	virtual SymbolBase* plunder() && = 0;
 
 	virtual SymbolBase* inc() && = 0;
+
+	virtual SymbolBase* normalize ( ) && = 0;
 };
 
 } /* namespace alphabet */
diff --git a/alib2data/src/automaton/AutomatonBase.h b/alib2data/src/automaton/AutomatonBase.h
index ed17dc3f051bb0ca0854f15f56d578725bb97c1c..946e49378828f0b5da4359cbc5db695f12533373 100644
--- a/alib2data/src/automaton/AutomatonBase.h
+++ b/alib2data/src/automaton/AutomatonBase.h
@@ -19,6 +19,8 @@ class AutomatonBase : public alib::ObjectBase {
 public:
 	virtual AutomatonBase* clone() const = 0;
 	virtual AutomatonBase* plunder() && = 0;
+
+	virtual AutomatonBase* normalize ( ) && = 0;
 };
 
 } /* namespace automaton */
diff --git a/alib2data/src/grammar/GrammarBase.h b/alib2data/src/grammar/GrammarBase.h
index 873d92dc4109d43daf5f0475088258e3b9971668..42642a72ed36f0219d55a0a9cad1bf05896af21c 100644
--- a/alib2data/src/grammar/GrammarBase.h
+++ b/alib2data/src/grammar/GrammarBase.h
@@ -19,6 +19,8 @@ class GrammarBase : public alib::ObjectBase {
 public:
 	virtual GrammarBase* clone() const = 0;
 	virtual GrammarBase* plunder() && = 0;
+
+	virtual GrammarBase* normalize ( ) && = 0;
 };
 
 } /* namespace grammar */
diff --git a/alib2data/src/label/LabelBase.h b/alib2data/src/label/LabelBase.h
index 9acd07d6b74f3504ee168360d0f1abe91511ee6a..3675c749c22ba3ed8d6ac41e22d0d6b921c438b3 100644
--- a/alib2data/src/label/LabelBase.h
+++ b/alib2data/src/label/LabelBase.h
@@ -21,6 +21,8 @@ public:
 	virtual LabelBase* plunder() && = 0;
 
 	virtual LabelBase* inc() && = 0;
+
+	virtual LabelBase* normalize ( ) && = 0;
 };
 
 } /* namespace label */
diff --git a/alib2data/src/regexp/RegExpBase.h b/alib2data/src/regexp/RegExpBase.h
index 3c23d3ce95824eb18e21d2a4af6e7f1accd5504c..490046ec2b42061f3ecdd51226201a3c0feb70f2 100644
--- a/alib2data/src/regexp/RegExpBase.h
+++ b/alib2data/src/regexp/RegExpBase.h
@@ -19,6 +19,8 @@ class RegExpBase : public alib::ObjectBase {
 public:
 	virtual RegExpBase* clone() const = 0;
 	virtual RegExpBase* plunder() && = 0;
+
+	virtual RegExpBase* normalize ( ) && = 0;
 };
 
 } /* namespace regexp */
diff --git a/alib2data/src/rte/RTEBase.h b/alib2data/src/rte/RTEBase.h
index e5407c54de246889923c8f86856236da0bf3f6ee..fe1f65302594deb417c9d629ea507bde9d35eccd 100644
--- a/alib2data/src/rte/RTEBase.h
+++ b/alib2data/src/rte/RTEBase.h
@@ -21,6 +21,8 @@ public:
 
 	virtual const std::set < std::ranked_symbol < > > & getAlphabet ( ) const = 0;
 	virtual const std::set < std::ranked_symbol < > > & getSubstitutionAlphabet ( ) const = 0;
+
+	virtual RTEBase* normalize ( ) && = 0;
 };
 
 } /* namespace rte */
diff --git a/alib2data/src/string/StringBase.h b/alib2data/src/string/StringBase.h
index fe7c47a54f84f9d7a90b3975253a9d608bbe24e6..ee227b810c4f27963cabfdd059ffd44c0301e781 100644
--- a/alib2data/src/string/StringBase.h
+++ b/alib2data/src/string/StringBase.h
@@ -21,6 +21,8 @@ class StringBase : public alib::ObjectBase {
 public:
 	virtual StringBase * clone ( ) const = 0;
 	virtual StringBase * plunder ( ) && = 0;
+
+	virtual StringBase* normalize ( ) && = 0;
 };
 
 } /* namespace string */
diff --git a/alib2data/src/tree/RankedTreeBase.h b/alib2data/src/tree/RankedTreeBase.h
index e5183ee48008ffa8d178b28241b4702495d3a153..3f61023a0dd80889d53d81e379885b50b6db0a94 100644
--- a/alib2data/src/tree/RankedTreeBase.h
+++ b/alib2data/src/tree/RankedTreeBase.h
@@ -21,6 +21,8 @@ class RankedTreeBase : public TreeBase {
 public:
 	virtual RankedTreeBase * clone ( ) const = 0;
 	virtual RankedTreeBase * plunder ( ) && = 0;
+
+	virtual RankedTreeBase* normalize ( ) && = 0;
 };
 
 } /* namespace tree */
diff --git a/alib2data/src/tree/TreeBase.h b/alib2data/src/tree/TreeBase.h
index caa1a7624ea2a3f1d4edfb5da1d8978f74f11a52..65055eb8e11a28252a7db8eaaaf81dc7c3d62828 100644
--- a/alib2data/src/tree/TreeBase.h
+++ b/alib2data/src/tree/TreeBase.h
@@ -19,6 +19,8 @@ class TreeBase : public alib::ObjectBase {
 public:
 	virtual TreeBase* clone() const = 0;
 	virtual TreeBase* plunder() && = 0;
+
+	virtual TreeBase* normalize ( ) && = 0;
 };
 
 } /* namespace tree */
diff --git a/alib2data/src/tree/UnrankedTreeBase.h b/alib2data/src/tree/UnrankedTreeBase.h
index b106d4a3406c665353a00656e719a8d8292dc681..ec7aa37f75d5e2ece93ae2079dbac09109360532 100644
--- a/alib2data/src/tree/UnrankedTreeBase.h
+++ b/alib2data/src/tree/UnrankedTreeBase.h
@@ -21,6 +21,8 @@ class UnrankedTreeBase : public TreeBase {
 public:
 	virtual UnrankedTreeBase * clone ( ) const = 0;
 	virtual UnrankedTreeBase * plunder ( ) && = 0;
+
+	virtual UnrankedTreeBase* normalize ( ) && = 0;
 };
 
 } /* namespace tree */
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index 63d7ad990880b6553847cebe93746a5ab98ff17c..0551f639ecf5031293749aa2cf98784de6ca8cdb 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -128,7 +128,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > variablesBars = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < VariablesBarSymbol > ( ).get ( ) ) );
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > nonlinearAlphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < NonlinearAlphabet > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index 1688ef99ae4e992fbec9d99b78410ef6ab39d20d..1e9d1cf8287d0da65c8de1dba662ef3422ab7558 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -117,7 +117,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > variablesBars = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < VariablesBarSymbol > ( ).get ( ) ) );
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > bars = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < BarSymbols > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index c0605eea9af183b77c26097b952d447d4f3574bd..82dfd8ee06d5de5591549c0e36facd5df3c197a5 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -104,7 +104,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > bars = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < BarSymbols > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::vector < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = alphabet::SymbolNormalize::normalizeRankedSymbols ( std::move ( m_Data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index 2b40344f3748b79d75bc190f607fb3770d6ec912..5f5d1fc9d153bdfee256ab18e393f74104ecc705 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -112,7 +112,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > nonlinearAlphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < NonlinearAlphabet > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index edc1ae25ac9cf2b8cf50200b7743dbbba457365d..ec5681c0cada8d0e3850d2570fe97c3c77cbf3c0 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -103,7 +103,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::vector < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = alphabet::SymbolNormalize::normalizeRankedSymbols ( std::move ( m_Data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index 0ded0a3c8d97e3f5fce4a1cee3dfac62056e0f3d..4b45896935938780f4821649478fbb33af098b0d 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -95,7 +95,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::vector < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = alphabet::SymbolNormalize::normalizeRankedSymbols ( std::move ( m_Data ) );
 
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index 6b10f84e82bd8c346c38eef2e69520d147d45b25..def29fc92029274b9dbeead11c5bc8ff41a28dfd 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -120,7 +120,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > nonlinearAlphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < NonlinearAlphabet > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index 7e236d12f2fb4570f2f78ae508080035834c459b..1f3c9788b1d909de3a0421163219fafd14adff19 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -114,7 +114,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::ranked_symbol < DefaultSymbolType, DefaultRankType > wildcard = alphabet::SymbolNormalize::normalizeRankedSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::tree < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = TreeNormalize::normalizeRankedTree ( std::move ( m_content ) );
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index 233cfa1460f08fce5f5d55d0dc6012432f77d809..d72fdbf9ce869f7253791e9aedc661b9fad2555d 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -110,7 +110,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual RankedTreeBase * normalize ( ) && {
 		std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > alphabet = alphabet::SymbolNormalize::normalizeRankedAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::tree < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > content = TreeNormalize::normalizeRankedTree ( std::move ( m_content ) );
 
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index 1458e0829d454168902c511fa9fdbd9d159e60af..3c7b27078b011dd852260dc210b7942e053f19f2 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -101,7 +101,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual UnrankedTreeBase * normalize ( ) && {
 		DefaultSymbolType bar = alphabet::SymbolNormalize::normalizeSymbol ( std::move ( this->template accessElement < BarSymbol > ( ).get ( ) ) );
 		std::set < DefaultSymbolType > alphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::vector < DefaultSymbolType > content = alphabet::SymbolNormalize::normalizeSymbols ( std::move ( m_Data ) );
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index 13acf19ae4eebdf5ec91eaa69688031bd7eb336b..ecbe5f2c0c32f4772a341db625e6cf40ac37c7ea 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -124,7 +124,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual UnrankedTreeBase * normalize ( ) && {
 		DefaultSymbolType wildcard = alphabet::SymbolNormalize::normalizeSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < DefaultSymbolType > nonlinearAlphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < NonlinearAlphabet > ( ).get ( ) ) );
 		std::set < DefaultSymbolType > alphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index f8fd599b68ac0b7529d8f84185444caed74f0086..97f754b23c7f1d1750dcc056a0ea47aabc245d7d 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -112,7 +112,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual UnrankedTreeBase * normalize ( ) && {
 		DefaultSymbolType wildcard = alphabet::SymbolNormalize::normalizeSymbol ( std::move ( this->template accessElement < SubtreeWildcard > ( ).get ( ) ) );
 		std::set < DefaultSymbolType > alphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::tree < DefaultSymbolType > content = TreeNormalize::normalizeTree ( std::move ( m_content ) );
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index 569d7a35fdf885667464c4ed8e85f6e69a80f63f..66973126a586dc1644d4d66d5c98aab9893b257e 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -107,7 +107,7 @@ public:
 
 	virtual alib::ObjectBase * inc ( ) &&;
 
-	virtual TreeBase * normalize ( ) && {
+	virtual UnrankedTreeBase * normalize ( ) && {
 		std::set < DefaultSymbolType > alphabet = alphabet::SymbolNormalize::normalizeAlphabet ( std::move ( this->template accessComponent < GeneralAlphabet > ( ).get ( ) ) );
 		std::tree < DefaultSymbolType > content = TreeNormalize::normalizeTree ( std::move ( m_content ) );