diff --git a/alib2algo_experimental/src/grammar/parsing/AbsorbTerminalSymbol.h b/alib2algo_experimental/src/grammar/parsing/AbsorbTerminalSymbol.h
index 6ac109e685c5377ba6479571ed3083e9dea089a2..088b055235dfae1c6cfa3f2a01f69e072cc04908 100644
--- a/alib2algo_experimental/src/grammar/parsing/AbsorbTerminalSymbol.h
+++ b/alib2algo_experimental/src/grammar/parsing/AbsorbTerminalSymbol.h
@@ -8,7 +8,7 @@
 #ifndef ABSORB_TERMINAL_SYMBOL_H_
 #define ABSORB_TERMINAL_SYMBOL_H_
 
-#include <grammar/GrammarFeatures.h>
+#include <grammar/ContextFree/CFG.h>
 #include <alphabet/Symbol.h>
 #include <alib/set>
 #include <alib/map>
diff --git a/alib2algo_experimental/src/grammar/parsing/CornerSubstitution.h b/alib2algo_experimental/src/grammar/parsing/CornerSubstitution.h
index 8d0edd36b4b8bad3ff4f3f75386facc71d6ea7ae..d577ed22e1c0534044463774a8877291191c9152 100644
--- a/alib2algo_experimental/src/grammar/parsing/CornerSubstitution.h
+++ b/alib2algo_experimental/src/grammar/parsing/CornerSubstitution.h
@@ -8,7 +8,7 @@
 #ifndef CORNER_SUBSTITUTION_H_
 #define CORNER_SUBSTITUTION_H_
 
-#include <grammar/GrammarFeatures.h>
+#include <grammar/ContextFree/CFG.h>
 #include <alphabet/Symbol.h>
 
 namespace grammar {
diff --git a/alib2algo_experimental/src/grammar/parsing/DeterministicLL1Grammar.h b/alib2algo_experimental/src/grammar/parsing/DeterministicLL1Grammar.h
index caf6d9168523eeb483ab241ff407954bb8a9ca23..8a34cae48112cefdcaafab9224cf1689dab40e74 100644
--- a/alib2algo_experimental/src/grammar/parsing/DeterministicLL1Grammar.h
+++ b/alib2algo_experimental/src/grammar/parsing/DeterministicLL1Grammar.h
@@ -8,7 +8,7 @@
 #ifndef DETERMINISTIC_LL_1_GRAMMAR_H_
 #define DETERMINISTIC_LL_1_GRAMMAR_H_
 
-#include <grammar/GrammarFeatures.h>
+#include <grammar/ContextFree/CFG.h>
 
 namespace grammar {
 
diff --git a/alib2algo_experimental/src/grammar/parsing/ExtractRightContext.h b/alib2algo_experimental/src/grammar/parsing/ExtractRightContext.h
index 7821f5c04c789613bcdffbb7df16eec19958ad9b..060c2741541d2fa4fd006b9366266b00e61a645d 100644
--- a/alib2algo_experimental/src/grammar/parsing/ExtractRightContext.h
+++ b/alib2algo_experimental/src/grammar/parsing/ExtractRightContext.h
@@ -8,7 +8,7 @@
 #ifndef EXTRACT_RIGHT_CONTEXT_H_
 #define EXTRACT_RIGHT_CONTEXT_H_
 
-#include <grammar/GrammarFeatures.h>
+#include <grammar/ContextFree/CFG.h>
 #include <alphabet/Symbol.h>
 #include <alib/set>
 
diff --git a/alib2algo_experimental/src/grammar/parsing/HandleFirstFirstConflict.h b/alib2algo_experimental/src/grammar/parsing/HandleFirstFirstConflict.h
index cfc6dc16ad941b2c3459360b3f793a405cb7d6f4..25158338a03e97b9f1a640b22dc7e071b38552b8 100644
--- a/alib2algo_experimental/src/grammar/parsing/HandleFirstFirstConflict.h
+++ b/alib2algo_experimental/src/grammar/parsing/HandleFirstFirstConflict.h
@@ -8,7 +8,7 @@
 #ifndef HANDLE_FIRST_FIRST_CONFLICT_H_
 #define HANDLE_FIRST_FIRST_CONFLICT_H_
 
-#include <grammar/GrammarFeatures.h>
+#include <grammar/ContextFree/CFG.h>
 #include <alphabet/Symbol.h>
 #include <alib/vector>
 
diff --git a/alib2algo_experimental/src/grammar/parsing/HandleFirstFollowConflict.h b/alib2algo_experimental/src/grammar/parsing/HandleFirstFollowConflict.h
index 02eb3611fec549d6b4172573575cee1d9acdb46e..18bb291c0833f0abf7fe5b7cffca63321eecc489 100644
--- a/alib2algo_experimental/src/grammar/parsing/HandleFirstFollowConflict.h
+++ b/alib2algo_experimental/src/grammar/parsing/HandleFirstFollowConflict.h
@@ -8,7 +8,7 @@
 #ifndef HANDLE_FIRST_FOLLOW_CONFLICT_H_
 #define HANDLE_FIRST_FOLLOW_CONFLICT_H_
 
-#include <grammar/GrammarFeatures.h>
+#include <grammar/ContextFree/CFG.h>
 #include <alphabet/Symbol.h>
 #include <alib/vector>
 #include <alib/set>
diff --git a/alib2algo_experimental/src/grammar/parsing/LeftFactorize.h b/alib2algo_experimental/src/grammar/parsing/LeftFactorize.h
index e698e2225b882da54b2a13e9638f45bcd412a160..c7d51be4ceee80ec98dbd595d7822459c84d5f0a 100644
--- a/alib2algo_experimental/src/grammar/parsing/LeftFactorize.h
+++ b/alib2algo_experimental/src/grammar/parsing/LeftFactorize.h
@@ -9,7 +9,7 @@
 #define LEFT_FACTORIZE_H_
 
 #include <alphabet/Symbol.h>
-#include <grammar/GrammarFeatures.h>
+#include <grammar/ContextFree/CFG.h>
 
 namespace grammar {
 
diff --git a/alib2algo_experimental/src/grammar/parsing/common/Substitute.h b/alib2algo_experimental/src/grammar/parsing/common/Substitute.h
index 2799e225fa45c0a1e077ae1c1935e9dd4c225259..f151b80f4466f13bd1779e91437ac1cdc89ef8d7 100644
--- a/alib2algo_experimental/src/grammar/parsing/common/Substitute.h
+++ b/alib2algo_experimental/src/grammar/parsing/common/Substitute.h
@@ -8,7 +8,7 @@
 #ifndef SUBSTITUTE_H_
 #define SUBSTITUTE_H_
 
-#include <grammar/GrammarFeatures.h>
+#include <grammar/ContextFree/CFG.h>
 #include <alphabet/Symbol.h>
 #include <alib/vector>
 
diff --git a/alib2data/src/alphabet/Symbol.h b/alib2data/src/alphabet/Symbol.h
index e981051f3c24b5bbb9e9d2d1428e46041027aab3..53cad5417327c43507bb930580aa06b00149cf70 100644
--- a/alib2data/src/alphabet/Symbol.h
+++ b/alib2data/src/alphabet/Symbol.h
@@ -14,7 +14,7 @@
 #include <alib/set>
 #include <alib/string>
 
-#include <label/LabelFeatures.h>
+#include <label/Label.h>
 
 namespace alphabet {
 
diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h
index aaee4196e0a44dbdfba47d1837fe417a65397bd0..42cf0d8dec66289f67b413383921c295d4384716 100644
--- a/alib2data/src/grammar/ContextFree/CFG.h
+++ b/alib2data/src/grammar/ContextFree/CFG.h
@@ -33,13 +33,16 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
+
+#include "EpsilonFreeCFG.h"
 
 namespace grammar {
 
@@ -61,7 +64,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class CFG final : public GrammarBase, public core::Components < CFG < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol on the left hand side to a set of sequences of terminal and nonterminal symbols.
@@ -311,12 +314,6 @@ public:
 	virtual object::ObjectBase * inc ( ) && override;
 };
 
-} /* namespace grammar */
-
-#include "EpsilonFreeCFG.h"
-
-namespace grammar {
-
 template < class SymbolType >
 CFG < SymbolType >::CFG ( SymbolType initialSymbol ) : CFG ( ext::set < SymbolType > { initialSymbol }, ext::set < SymbolType > ( ), initialSymbol ) {
 }
diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h
index 1a1f0ccebae448d10979457fa31c8e77590171af..5f80302b7156f604e52ef3bada9d355289625bbd 100644
--- a/alib2data/src/grammar/ContextFree/CNF.h
+++ b/alib2data/src/grammar/ContextFree/CNF.h
@@ -34,13 +34,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -62,7 +63,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class CNF final : public GrammarBase, public core::Components < CNF < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol on the left hand side to a set of sequences of terminal and nonterminal symbols.
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
index 932b7f19a689560448a12924badf0d2662fd712c..21b37a6418a6709bb1d25d1f88ce7a041596dfc5 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
@@ -33,13 +33,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -61,7 +62,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class EpsilonFreeCFG final : public GrammarBase, public core::Components < EpsilonFreeCFG < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol on the left hand side to a set of sequences of terminal and nonterminal symbols.
diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h
index 8a9ebe1d4a560f3edeb8060d7dc746c953e2d465..42d245a4997b45231df9c49fa9dd5e9c58233ce5 100644
--- a/alib2data/src/grammar/ContextFree/GNF.h
+++ b/alib2data/src/grammar/ContextFree/GNF.h
@@ -33,13 +33,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -61,7 +62,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class GNF final : public GrammarBase, public core::Components < GNF < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol on the left hand side to a set of sequences of terminal and nonterminal symbols.
diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h
index 084b89cf0091edb47fdf9a3ba41212211937f029..1b071ae9d7eb5e8723c156b248b2d5425ce2f203 100644
--- a/alib2data/src/grammar/ContextFree/LG.h
+++ b/alib2data/src/grammar/ContextFree/LG.h
@@ -35,13 +35,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -63,7 +64,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class LG final : public GrammarBase, public core::Components < LG < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol on the left hand side to a set of sequences of terminal and nonterminal symbols.
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h
index ba8d832d163dece9ec4d0baf59d7f912455a1d7d..748d7bb4a68b4d1ca0b531e9920c943a2e0929bc 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/ContextSensitive/CSG.h
@@ -33,13 +33,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -61,7 +62,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class CSG final : public GrammarBase, public core::Components < CSG < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol and contexts on the left hand side to a set of sequences of terminal and nonterminal symbols.
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
index 26f0ee9a70b59e26a86746f4ee7e701cc110d3c8..27fba1492ace8e54abd29d2831a5144592f0481b 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
@@ -33,13 +33,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -61,7 +62,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class NonContractingGrammar final : public GrammarBase, public core::Components < NonContractingGrammar < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol on the left hand side to a set of sequences of terminal and nonterminal symbols.
diff --git a/alib2data/src/grammar/GrammarFeatures.h b/alib2data/src/grammar/GrammarFeatures.h
deleted file mode 100644
index 49e94fa390745ff234900dc444c5139e485da37f..0000000000000000000000000000000000000000
--- a/alib2data/src/grammar/GrammarFeatures.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * GrammarFeatures.h
- *
- *  Created on: Jun 19, 2014
- *      Author: Jan Travnicek
- */
-
-#ifndef GRAMMAR_FEATURES_H_
-#define GRAMMAR_FEATURES_H_
-
-#include <common/DefaultSymbolType.h>
-
-namespace grammar {
-
-class Grammar;
-class GrammarBase;
-
-template<class SymbolType = DefaultSymbolType >
-class LeftLG;
-template<class SymbolType = DefaultSymbolType >
-class LeftRG;
-template<class SymbolType = DefaultSymbolType >
-class RightLG;
-template<class SymbolType = DefaultSymbolType >
-class RightRG;
-template<class SymbolType = DefaultSymbolType >
-class LG;
-template<class SymbolType = DefaultSymbolType >
-class CFG;
-template<class SymbolType = DefaultSymbolType >
-class EpsilonFreeCFG;
-template<class SymbolType = DefaultSymbolType >
-class CNF;
-template<class SymbolType = DefaultSymbolType >
-class GNF;
-template<class SymbolType = DefaultSymbolType >
-class CSG;
-template<class SymbolType = DefaultSymbolType >
-class NonContractingGrammar;
-template<class SymbolType = DefaultSymbolType >
-class ContextPreservingUnrestrictedGrammar;
-template<class SymbolType = DefaultSymbolType >
-class UnrestrictedGrammar;
-
-} /* namespace grammar */
-
-#endif /* GRAMMAR_FEATURES_H_ */
diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h
index 88b3280862fdef9a95350ea30f8b16003b990967..0137a99030ac7a96e162c7f8876ce46a23c432c4 100644
--- a/alib2data/src/grammar/Regular/LeftLG.h
+++ b/alib2data/src/grammar/Regular/LeftLG.h
@@ -34,13 +34,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -62,7 +63,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class LeftLG final : public GrammarBase, public core::Components < LeftLG < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules as mapping from nonterminal symbol on the left hand side to set of either sequence of terminal symbols or doublets of sequence of terminal symbols and nonterminal symbol.
diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h
index 4d3c94483422ee95e506a74fea92272e62801e71..89f53eea50ac84585f58330d4425e67a1f458eb6 100644
--- a/alib2data/src/grammar/Regular/LeftRG.h
+++ b/alib2data/src/grammar/Regular/LeftRG.h
@@ -34,13 +34,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
+#include <common/DefaultSymbolType.h>
+
 #include <grammar/GrammarBase.h>
-#include <grammar/GrammarFeatures.h>
 #include <grammar/GrammarException.h>
-#include <grammar/common/GrammarNormalize.h>
-#include <alphabet/common/SymbolNormalize.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -66,7 +67,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class LeftRG final : public GrammarBase, public core::Components < LeftRG < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules as mapping from nonterminal symbol on the left hand side to set of either terminal symbols or doublets of terminal symbol and nonterminal symbol.
diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h
index 4ed5386fff2f1659241cb91c81f31b2df7a88ece..ee8b24379f9ca4c5ec40007d2abd4257f55a6734 100644
--- a/alib2data/src/grammar/Regular/RightLG.h
+++ b/alib2data/src/grammar/Regular/RightLG.h
@@ -34,13 +34,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -62,7 +63,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class RightLG final : public GrammarBase, public core::Components < RightLG < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules as mapping from nonterminal symbol on the left hand side to set of either sequence of terminal symbols or doublets of sequence of nonterminal symbol and terminal symbols.
diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h
index 5c3df888eb56b2bbbdc56c7bf2453fb81e623b4a..8bed8b56e432926dcfe88f187fb996a6d8f12602 100644
--- a/alib2data/src/grammar/Regular/RightRG.h
+++ b/alib2data/src/grammar/Regular/RightRG.h
@@ -34,13 +34,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -66,7 +67,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class RightRG final : public GrammarBase, public core::Components < RightRG < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol on the left hand side to set of either terminal symbols or doublets of terminal symbol and nonterminal symbol.
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
index 84965ffe38be1ae56e9222533262a0f51922dddd..17e2a93124613f1ce4b2d2a014d4b4f97d716499 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -33,13 +33,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -61,7 +62,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class ContextPreservingUnrestrictedGrammar final : public GrammarBase, public core::Components < ContextPreservingUnrestrictedGrammar < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol and contexts on the left hand side to a set of sequences of terminal and nonterminal symbols.
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
index e0158d1e6fb5eb9e7d4f802dba1b016536caed04..5105e85f863e2aa475bcab6334664b23763d14eb 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
@@ -33,13 +33,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../GrammarBase.h"
-#include "../GrammarFeatures.h"
-#include "../GrammarException.h"
-#include "../common/GrammarNormalize.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <grammar/GrammarBase.h>
+#include <grammar/GrammarException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+#include <grammar/common/GrammarNormalize.h>
 
 namespace grammar {
 
@@ -61,7 +62,7 @@ class InitialSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet, the nonterminal alphabet, and the initial symbol of the grammar.
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class UnrestrictedGrammar final : public GrammarBase, public core::Components < UnrestrictedGrammar < SymbolType >, ext::set < SymbolType >, component::Set, std::tuple < TerminalAlphabet, NonterminalAlphabet >, SymbolType, component::Value, InitialSymbol > {
 	/**
 	 * Rules function as mapping from nonterminal symbol and contexts on the left hand side to a set of sequences of terminal and nonterminal symbols.
diff --git a/alib2data/src/label/LabelFeatures.h b/alib2data/src/label/LabelFeatures.h
deleted file mode 100644
index ed4327bde79f0558c02e88186faae707a35b924b..0000000000000000000000000000000000000000
--- a/alib2data/src/label/LabelFeatures.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * LabelFeatures.h
- *
- *  Created on: Jun 19, 2014
- *      Author: Jan Travnicek
- */
-
-#ifndef LABEL_FEATURES_H_
-#define LABEL_FEATURES_H_
-
-namespace label {
-
-class Label;
-class LabelBase;
-
-class PrimitiveLabel;
-class UniqueLabel;
-class InitialStateLabel;
-class FailStateLabel;
-class FinalStateLabel;
-
-} /* namespace label */
-
-#endif /* LABEL_FEATURES_H_ */
diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h
index 22d1e5c2656f621933828e63524faccb100837fb..a18f17c189550ed97c1915bf9893468453de9c6b 100644
--- a/alib2data/src/string/CyclicString.h
+++ b/alib2data/src/string/CyclicString.h
@@ -32,12 +32,15 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "StringBase.h"
-#include "StringFeatures.h"
+#include <common/DefaultSymbolType.h>
+
+#include <string/StringBase.h>
 #include <exception/CommonException.h>
-#include <alphabet/common/SymbolNormalize.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+
+#include "Epsilon.h"
 
 namespace string {
 
@@ -57,7 +60,7 @@ class GeneralAlphabet;
  *
  * \tparam SymbolType used for the terminal alphabet
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class CyclicString final : public StringBase, public core::Components < CyclicString < SymbolType >, ext::set < SymbolType >, component::Set, GeneralAlphabet > {
 	/**
 	 * Representation of the string content.
diff --git a/alib2data/src/string/Epsilon.h b/alib2data/src/string/Epsilon.h
index 7b6655c6fe1a8b785df4967a0174573f9252c2a1..e862b45c5da4d9b20c19c440827dcb91cc38bb88 100644
--- a/alib2data/src/string/Epsilon.h
+++ b/alib2data/src/string/Epsilon.h
@@ -30,11 +30,13 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "StringBase.h"
-#include "StringFeatures.h"
-#include <alphabet/common/SymbolNormalize.h>
+#include <common/DefaultSymbolType.h>
+
+#include <string/StringBase.h>
+#include <exception/CommonException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
 
 namespace string {
 
@@ -54,7 +56,7 @@ class GeneralAlphabet;
  *
  * \tparam SymbolType used for the terminal alphabet
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class Epsilon final : public StringBase, public core::Components < Epsilon < SymbolType >, ext::set < SymbolType >, component::Set, GeneralAlphabet > {
 	/**
 	 * Representation of the epsilon content.
diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h
index 8e252c720af896c9c94f3d3ebe31e104103591ec..45dd9bb1a7d6fb64bfc981ba104037a83c5c0594 100644
--- a/alib2data/src/string/LinearString.h
+++ b/alib2data/src/string/LinearString.h
@@ -32,12 +32,15 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "StringBase.h"
-#include "StringFeatures.h"
+#include <common/DefaultSymbolType.h>
+
+#include <string/StringBase.h>
 #include <exception/CommonException.h>
-#include <alphabet/common/SymbolNormalize.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+
+#include "Epsilon.h"
 
 namespace string {
 
@@ -54,7 +57,7 @@ class GeneralAlphabet;
  *
  * \tparam SymbolType used for the terminal alphabet
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class LinearString final : public StringBase, public core::Components < LinearString < SymbolType >, ext::set < SymbolType >, component::Set, GeneralAlphabet > {
 	/**
 	 * Representation of the string content.
diff --git a/alib2data/src/string/StringFeatures.h b/alib2data/src/string/StringFeatures.h
deleted file mode 100644
index a0dd06fc26d1a451e22d9ea04aa8729dec0db919..0000000000000000000000000000000000000000
--- a/alib2data/src/string/StringFeatures.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * StringFeatures.h
- *
- *  Created on: Jun 19, 2014
- *      Author: Jan Travnicek
- */
-
-#ifndef STRING_FEATURES_H_
-#define STRING_FEATURES_H_
-
-#include <common/DefaultSymbolType.h>
-
-namespace string {
-
-class String;
-class StringBase;
-
-template < class SymbolType = DefaultSymbolType >
-class Epsilon;
-template < class SymbolType = DefaultSymbolType >
-class LinearString;
-template < class SymbolType = DefaultSymbolType >
-class WildcardLinearString;
-template < class SymbolType = DefaultSymbolType >
-class CyclicString;
-
-} /* namespace string */
-
-#endif /* STRING_FEATURES_H_ */
diff --git a/alib2data/src/string/WildcardLinearString.h b/alib2data/src/string/WildcardLinearString.h
index 67ba0e27da51e4cecc7c2edf8e5e5c257c5d79c0..93daf8143fdbee4b1e05e6617bdb30320568777d 100644
--- a/alib2data/src/string/WildcardLinearString.h
+++ b/alib2data/src/string/WildcardLinearString.h
@@ -16,15 +16,16 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "StringBase.h"
-#include "StringFeatures.h"
-#include "LinearString.h"
-#include <exception/CommonException.h>
-#include <alphabet/common/SymbolNormalize.h>
-
 #include <alphabet/WildcardSymbol.h>
+#include <common/DefaultSymbolType.h>
+
+#include <string/StringBase.h>
+#include <exception/CommonException.h>
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+
+#include "LinearString.h"
 
 namespace string {
 
@@ -43,7 +44,7 @@ class WildcardSymbol;
  *
  * \tparam SymbolType used for the terminal alphabet
  */
-template < class SymbolType >
+template < class SymbolType = DefaultSymbolType >
 class WildcardLinearString final : public StringBase, public core::Components < WildcardLinearString < SymbolType >, ext::set < SymbolType >, component::Set, GeneralAlphabet, SymbolType, component::Value, WildcardSymbol > {
 	/**
 	 * Representation of the string content.
diff --git a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
index 5947d522e6f654befb85f5665598fe67aebc0bc1..196cd30c13e5856787ef9fbf097b701a0803b723 100644
--- a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
+++ b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
@@ -14,7 +14,6 @@
 #include <alib/deque>
 
 #include <string/StringBase.h>
-#include <string/StringFeatures.h>
 
 #include <alphabet/Symbol.h>
 #include <core/components.hpp>
@@ -22,6 +21,8 @@
 #include <sax/Token.h>
 #include <core/xmlApi.hpp>
 
+#include <string/LinearString.h>
+
 namespace string {
 
 class GeneralAlphabet;