diff --git a/alib2algo/test-src/automaton/simplify/FSMSingleInitialStateTest.cpp b/alib2algo/test-src/automaton/simplify/FSMSingleInitialStateTest.cpp
index 7d8350f3673028f8d9aff5a05c64c86695488c06..3ceffeabb7d4cfd97e379bff1f4c63ed676e874a 100644
--- a/alib2algo/test-src/automaton/simplify/FSMSingleInitialStateTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/FSMSingleInitialStateTest.cpp
@@ -19,14 +19,14 @@ void FSMSingleInitialStateTest::tearDown() {
 }
 
 void FSMSingleInitialStateTest::testSingleInitialState() {
-	label::Label q  = label::Label ("q");
-	label::Label q0 = label::Label ("q0");
-	label::Label q1 = label::Label ("q1");
-	label::Label q2 = label::Label ("q2");
-	label::Label q3 = label::Label ("q3");
-
-	alphabet::Symbol a = alphabet::Symbol('a');
-	alphabet::Symbol b = alphabet::Symbol('b');
+	DefaultStateType q  = DefaultStateType ("q");
+	DefaultStateType q0 = DefaultStateType ("q0");
+	DefaultStateType q1 = DefaultStateType ("q1");
+	DefaultStateType q2 = DefaultStateType ("q2");
+	DefaultStateType q3 = DefaultStateType ("q3");
+
+	DefaultSymbolType a = DefaultSymbolType('a');
+	DefaultSymbolType b = DefaultSymbolType('b');
 
 	automaton::MultiInitialStateNFA < > automaton1;
 	automaton1.setStates({q0, q1, q2, q3});
diff --git a/alib2algo/test-src/automaton/simplify/FSMTotalTest.cpp b/alib2algo/test-src/automaton/simplify/FSMTotalTest.cpp
index e8f4e8ea638c3251fb2b27eac1a1a8ba69c5d312..0cfecbd2d788917d19b4b902db5dfbe74d8bf3e1 100644
--- a/alib2algo/test-src/automaton/simplify/FSMTotalTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/FSMTotalTest.cpp
@@ -16,13 +16,13 @@ void TotalTest::tearDown() {
 }
 
 void TotalTest::testTotal() {
-	label::Label q0 = label::Label ("q0");
-	label::Label q1 = label::Label ("q1");
-	label::Label q2 = label::Label ("q2");
+	DefaultStateType q0 = DefaultStateType ("q0");
+	DefaultStateType q1 = DefaultStateType ("q1");
+	DefaultStateType q2 = DefaultStateType ("q2");
 
-	alphabet::Symbol a = alphabet::Symbol('a');
-	alphabet::Symbol b = alphabet::Symbol('b');
-	alphabet::Symbol c = alphabet::Symbol('c');
+	DefaultSymbolType a = DefaultSymbolType('a');
+	DefaultSymbolType b = DefaultSymbolType('b');
+	DefaultSymbolType c = DefaultSymbolType('c');
 
 	automaton::DFA<> automaton(q0);
 	automaton.setStates({q0, q1, q2});
diff --git a/alib2algo/test-src/automaton/simplify/minimizeBrzozowskiTest.cpp b/alib2algo/test-src/automaton/simplify/minimizeBrzozowskiTest.cpp
index 201429ff1da13d69ca42aec3ab55eac1946cd43d..9501072b2ebb04934107f519416989eb55452902 100644
--- a/alib2algo/test-src/automaton/simplify/minimizeBrzozowskiTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/minimizeBrzozowskiTest.cpp
@@ -18,18 +18,18 @@ void minimizeBrzozowskiTest::tearDown() {
 }
 
 void minimizeBrzozowskiTest::testMinimizeBrzozowski() {
-  automaton::DFA < > automaton(label::Label(1));
+  automaton::DFA < > automaton(DefaultStateType(1));
 
-  automaton.addState(label::Label(1));
-  automaton.addState(label::Label(2));
-  automaton.addState(label::Label(3));
-  automaton.addInputSymbol(alphabet::Symbol("a"));
-  automaton.addInputSymbol(alphabet::Symbol("b"));
+  automaton.addState(DefaultStateType(1));
+  automaton.addState(DefaultStateType(2));
+  automaton.addState(DefaultStateType(3));
+  automaton.addInputSymbol(DefaultSymbolType("a"));
+  automaton.addInputSymbol(DefaultSymbolType("b"));
   
-  automaton.addTransition(label::Label(1), alphabet::Symbol("a"), label::Label(2));
-  automaton.addTransition(label::Label(2), alphabet::Symbol("b"), label::Label(1));
+  automaton.addTransition(DefaultStateType(1), DefaultSymbolType("a"), DefaultStateType(2));
+  automaton.addTransition(DefaultStateType(2), DefaultSymbolType("b"), DefaultStateType(1));
 
-  automaton.addFinalState(label::Label(3));
+  automaton.addFinalState(DefaultStateType(3));
   
   automaton::DFA<> minimizedHopcroft = automaton::simplify::Minimize::minimize(automaton);
   automaton::DFA<> minimizedBrzozowski = automaton::simplify::MinimizeBrzozowski::minimize(automaton);
diff --git a/alib2algo/test-src/automaton/simplify/minimizeTest.cpp b/alib2algo/test-src/automaton/simplify/minimizeTest.cpp
index b3d61923629b6862466e4234004d2e6a2f0fb910..2a15aac8417db10f67a738ce09658372983afcb6 100644
--- a/alib2algo/test-src/automaton/simplify/minimizeTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/minimizeTest.cpp
@@ -15,18 +15,18 @@ void minimizeTest::tearDown() {
 }
 
 void minimizeTest::testMinimize() {
-  automaton::DFA < > automaton(label::Label(1));
+  automaton::DFA < > automaton(DefaultStateType(1));
 
-  automaton.addState(label::Label(1));
-  automaton.addState(label::Label(2));
-  automaton.addState(label::Label(3));
-  automaton.addInputSymbol(alphabet::Symbol("a"));
-  automaton.addInputSymbol(alphabet::Symbol("b"));
+  automaton.addState(DefaultStateType(1));
+  automaton.addState(DefaultStateType(2));
+  automaton.addState(DefaultStateType(3));
+  automaton.addInputSymbol(DefaultSymbolType("a"));
+  automaton.addInputSymbol(DefaultSymbolType("b"));
   
-  automaton.addTransition(label::Label(1), alphabet::Symbol("a"), label::Label(2));
-  automaton.addTransition(label::Label(2), alphabet::Symbol("b"), label::Label(1));
+  automaton.addTransition(DefaultStateType(1), DefaultSymbolType("a"), DefaultStateType(2));
+  automaton.addTransition(DefaultStateType(2), DefaultSymbolType("b"), DefaultStateType(1));
 
-  automaton.addFinalState(label::Label(3));
+  automaton.addFinalState(DefaultStateType(3));
   
   automaton::DFA<> minimized = automaton::simplify::Minimize::minimize(automaton);
 
diff --git a/alib2algo/test-src/automaton/simplify/normalizeTest.cpp b/alib2algo/test-src/automaton/simplify/normalizeTest.cpp
index 66c4a1cf14941766d7006f04351374e386b0d0ad..eb263efb6314d20b0396408ad104899b8acde873 100644
--- a/alib2algo/test-src/automaton/simplify/normalizeTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/normalizeTest.cpp
@@ -15,18 +15,18 @@ void normalizeTest::tearDown() {
 }
 
 void normalizeTest::testNormalize() {
-  automaton::DFA < > automaton(label::Label(0));
+  automaton::DFA < > automaton(DefaultStateType(0));
 
-  automaton.addState(label::Label(0));
-  automaton.addState(label::Label(1));
-  automaton.addState(label::Label(2));
-  automaton.addInputSymbol(alphabet::Symbol("a"));
-  automaton.addInputSymbol(alphabet::Symbol("b"));
+  automaton.addState(DefaultStateType(0));
+  automaton.addState(DefaultStateType(1));
+  automaton.addState(DefaultStateType(2));
+  automaton.addInputSymbol(DefaultSymbolType("a"));
+  automaton.addInputSymbol(DefaultSymbolType("b"));
   
-  automaton.addTransition(label::Label(0), alphabet::Symbol("a"), label::Label(1));
-  automaton.addTransition(label::Label(1), alphabet::Symbol("b"), label::Label(2));
+  automaton.addTransition(DefaultStateType(0), DefaultSymbolType("a"), DefaultStateType(1));
+  automaton.addTransition(DefaultStateType(1), DefaultSymbolType("b"), DefaultStateType(2));
 
-  automaton.addFinalState(label::Label(2));
+  automaton.addFinalState(DefaultStateType(2));
   
   automaton::DFA<> normalized = automaton::simplify::Normalize::normalize(automaton);
 
diff --git a/alib2algo/test-src/automaton/simplify/trimTest.cpp b/alib2algo/test-src/automaton/simplify/trimTest.cpp
index 3ffaf11febc00d53689bb69f997b9789f3d78dab..f8abc7b7a933deb7f70cf883d42b5418598665d1 100644
--- a/alib2algo/test-src/automaton/simplify/trimTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/trimTest.cpp
@@ -19,19 +19,19 @@ void trimTest::tearDown() {
 }
 
 void trimTest::testTrimAutomaton() {
-  automaton::DFA < > automaton(label::Label(1));
+  automaton::DFA < > automaton(DefaultStateType(1));
 
-  automaton.addState(label::Label(1));
-  automaton.addState(label::Label(2));
-  automaton.addState(label::Label(3));
-  automaton.addInputSymbol(alphabet::Symbol("a"));
-  automaton.addInputSymbol(alphabet::Symbol("b"));
+  automaton.addState(DefaultStateType(1));
+  automaton.addState(DefaultStateType(2));
+  automaton.addState(DefaultStateType(3));
+  automaton.addInputSymbol(DefaultSymbolType("a"));
+  automaton.addInputSymbol(DefaultSymbolType("b"));
   
-  automaton.addTransition(label::Label(1), alphabet::Symbol("a"), label::Label(2));
-  automaton.addTransition(label::Label(2), alphabet::Symbol("b"), label::Label(1));
-  automaton.addTransition(label::Label(3), alphabet::Symbol("b"), label::Label(1));
+  automaton.addTransition(DefaultStateType(1), DefaultSymbolType("a"), DefaultStateType(2));
+  automaton.addTransition(DefaultStateType(2), DefaultSymbolType("b"), DefaultStateType(1));
+  automaton.addTransition(DefaultStateType(3), DefaultSymbolType("b"), DefaultStateType(1));
 
-  automaton.addFinalState(label::Label(1));
+  automaton.addFinalState(DefaultStateType(1));
   
   automaton::DFA<> trimed = automaton::simplify::Trim::trim(automaton);
 
@@ -39,25 +39,25 @@ void trimTest::testTrimAutomaton() {
 }
 
 void trimTest::testTrimGrammar() {
-  grammar::RightRG < > rrGrammar(alphabet::Symbol(1));
+  grammar::RightRG < > rrGrammar(DefaultSymbolType(1));
 
-  rrGrammar.addNonterminalSymbol(alphabet::Symbol(1));
-  rrGrammar.addNonterminalSymbol(alphabet::Symbol(2));
-  rrGrammar.addNonterminalSymbol(alphabet::Symbol(3));
-  rrGrammar.addNonterminalSymbol(alphabet::Symbol(4));
-  rrGrammar.addNonterminalSymbol(alphabet::Symbol(5));
-  rrGrammar.addNonterminalSymbol(alphabet::Symbol(6));
-  rrGrammar.addTerminalSymbol(alphabet::Symbol("a"));
-  rrGrammar.addTerminalSymbol(alphabet::Symbol("b"));
+  rrGrammar.addNonterminalSymbol(DefaultSymbolType(1));
+  rrGrammar.addNonterminalSymbol(DefaultSymbolType(2));
+  rrGrammar.addNonterminalSymbol(DefaultSymbolType(3));
+  rrGrammar.addNonterminalSymbol(DefaultSymbolType(4));
+  rrGrammar.addNonterminalSymbol(DefaultSymbolType(5));
+  rrGrammar.addNonterminalSymbol(DefaultSymbolType(6));
+  rrGrammar.addTerminalSymbol(DefaultSymbolType("a"));
+  rrGrammar.addTerminalSymbol(DefaultSymbolType("b"));
   
-  rrGrammar.addRule(alphabet::Symbol(1), std::make_pair(alphabet::Symbol("a"), alphabet::Symbol(2)));
-  rrGrammar.addRule(alphabet::Symbol(2), std::make_pair(alphabet::Symbol("b"), alphabet::Symbol(3)));
-  rrGrammar.addRule(alphabet::Symbol(3), alphabet::Symbol("a"));
+  rrGrammar.addRule(DefaultSymbolType(1), std::make_pair(DefaultSymbolType("a"), DefaultSymbolType(2)));
+  rrGrammar.addRule(DefaultSymbolType(2), std::make_pair(DefaultSymbolType("b"), DefaultSymbolType(3)));
+  rrGrammar.addRule(DefaultSymbolType(3), DefaultSymbolType("a"));
 
-  rrGrammar.addRule(alphabet::Symbol(4), std::make_pair(alphabet::Symbol("b"), alphabet::Symbol(5)));
-  rrGrammar.addRule(alphabet::Symbol(5), alphabet::Symbol("a"));
-  rrGrammar.addRule(alphabet::Symbol(5), std::make_pair(alphabet::Symbol("b"), alphabet::Symbol(2)));
-  rrGrammar.addRule(alphabet::Symbol(6), std::make_pair(alphabet::Symbol("b"), alphabet::Symbol(6)));
+  rrGrammar.addRule(DefaultSymbolType(4), std::make_pair(DefaultSymbolType("b"), DefaultSymbolType(5)));
+  rrGrammar.addRule(DefaultSymbolType(5), DefaultSymbolType("a"));
+  rrGrammar.addRule(DefaultSymbolType(5), std::make_pair(DefaultSymbolType("b"), DefaultSymbolType(2)));
+  rrGrammar.addRule(DefaultSymbolType(6), std::make_pair(DefaultSymbolType("b"), DefaultSymbolType(6)));
 
   grammar::RightRG < > trimed = grammar::simplify::Trim::trim(rrGrammar);