diff --git a/alib2algo/src/rte/glushkov/GlushkovFollowNaive.h b/alib2algo/src/rte/glushkov/GlushkovFollowNaive.h
index 00113d06e29af192b7260468726894a5b088d8a8..1583b17e25d13c78a7d1b1b6b0cbc3afc11ba06a 100644
--- a/alib2algo/src/rte/glushkov/GlushkovFollowNaive.h
+++ b/alib2algo/src/rte/glushkov/GlushkovFollowNaive.h
@@ -39,8 +39,8 @@ class GlushkovFollowNaive {
 	template < class SymbolType, class RankType >
 	static void preprocessSubMap ( const TAlphabet < SymbolType, RankType > & alphabetK, TSubstMap < SymbolType, RankType > & subMap );
 
-	template < class T >
-	static ext::vector < ext::vector < T > > cartesian ( const ext::vector < ext::vector < T > > & input );
+	template < class SymbolType, class RankType >
+	static ext::vector < ext::vector < common::ranked_symbol < SymbolType, RankType > > > cartesian ( const ext::vector < ext::vector < common::ranked_symbol < SymbolType, RankType > > > & input );
 
 	template < class T >
 	static void cartesian_rec ( const ext::vector < ext::vector < T > > & input, ext::vector < ext::vector < T > > & ret, ext::vector < T > & current, size_t depth );
@@ -93,10 +93,10 @@ void GlushkovFollowNaive::cartesian_rec ( const ext::vector < ext::vector < T >
 		}
 }
 
-template < class T >
-ext::vector < ext::vector < T > > GlushkovFollowNaive::cartesian ( const ext::vector < ext::vector < T > > & input ) {
-	ext::vector < ext::vector < T > > ret;
-	ext::vector < T > current ( input.size ( ), T ( 0, 0 ) );
+template < class SymbolType, class RankType >
+ext::vector < ext::vector < common::ranked_symbol < SymbolType, RankType > > > GlushkovFollowNaive::cartesian ( const ext::vector < ext::vector < common::ranked_symbol < SymbolType, RankType > > > & input ) {
+	ext::vector < ext::vector < common::ranked_symbol < SymbolType, RankType > > > ret;
+	ext::vector < common::ranked_symbol < SymbolType, RankType > > current ( input.size ( ), common::ranked_symbol < SymbolType, RankType > ( SymbolType ( 0 ), RankType ( 0 ) ) );
 
 	cartesian_rec ( input, ret, current, 0 );
 
diff --git a/alib2algo/src/tree/generate/RandomTreeFactory.cpp b/alib2algo/src/tree/generate/RandomTreeFactory.cpp
index 14df531ccf002784627a7a7369ee41a1178ade29..8e35b430983f43c17a643273119385c1849e169b 100644
--- a/alib2algo/src/tree/generate/RandomTreeFactory.cpp
+++ b/alib2algo/src/tree/generate/RandomTreeFactory.cpp
@@ -145,12 +145,12 @@ struct Node {
 			nextChild = nextChild->right;
 		}
 
-		return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( symbol, rank ), std::move ( children ) );
+		return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( DefaultSymbolType ( symbol ), DefaultRankType ( rank ) ), std::move ( children ) );
 	}
 
 	ext::tree < common::ranked_symbol < > > createRankedPatternNode ( ) {
 		if ( rank == 0 ) {
-			return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( alphabet::SubtreeWildcardSymbol::instance < DefaultSymbolType > ( ), 0 ), { } );
+			return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( alphabet::SubtreeWildcardSymbol::instance < DefaultSymbolType > ( ), DefaultRankType ( 0 ) ), { } );
 		} else {
 			ext::vector < ext::tree < common::ranked_symbol < > > > children;
 			Node * nextChild = child;
@@ -160,16 +160,16 @@ struct Node {
 				nextChild = nextChild->right;
 			}
 
-			return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( symbol, rank ), std::move ( children ) );
+			return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( DefaultSymbolType ( symbol ), DefaultRankType ( rank ) ), std::move ( children ) );
 		}
 	}
 
 	ext::tree < common::ranked_symbol < > > createRankedNonlinearPatternNode ( bool singleNonlinearVariable ) {
 		if ( rank == 0 ) {
 			if ( singleNonlinearVariable )
-				return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( DefaultSymbolType ( alphabet::NonlinearVariableSymbol < > ( DefaultSymbolType ( "A" ) ) ), 0 ), { } );
+				return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( DefaultSymbolType ( alphabet::NonlinearVariableSymbol < > ( DefaultSymbolType ( "A" ) ) ), DefaultRankType ( 0 ) ), { } );
 			else
-				return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( DefaultSymbolType ( alphabet::NonlinearVariableSymbol < > ( symbol ) ), 0 ), { } );
+				return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( DefaultSymbolType ( alphabet::NonlinearVariableSymbol < > ( symbol ) ), DefaultRankType ( 0 ) ), { } );
 		} else {
 			ext::vector < ext::tree < common::ranked_symbol < > > > children;
 			Node * nextChild = child;
@@ -179,7 +179,7 @@ struct Node {
 				nextChild = nextChild->right;
 			}
 
-			return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( symbol, rank ), std::move ( children ) );
+			return ext::tree < common::ranked_symbol < > > ( common::ranked_symbol < > ( DefaultSymbolType ( symbol ), DefaultRankType ( rank ) ), std::move ( children ) );
 		}
 	}
 
@@ -335,7 +335,7 @@ RankedTree < > RandomRankedTreeFactory::generateRankedTree ( int depth, int node
 
 	for ( const std::pair < int, ext::vector < char > > & it : rankedAlphabet )
 		for ( char i : it.second )
-			treeRankedAlphabet.insert ( common::ranked_symbol < > ( i, it.first ) );
+			treeRankedAlphabet.insert ( common::ranked_symbol < > ( DefaultSymbolType ( i ), DefaultRankType ( it.first ) ) );
 
 	RankedTree < > tree ( treeRankedAlphabet, root->createRankedNode ( ) );
 	delete root;
@@ -356,7 +356,7 @@ RankedPattern < > RandomRankedPatternFactory::generateRankedPattern ( int depth,
 
 	for ( const std::pair < int, ext::vector < char > > & it : rankedAlphabet )
 		for ( char i : it.second )
-			treeRankedAlphabet.insert ( common::ranked_symbol < > ( i, it.first ) );
+			treeRankedAlphabet.insert ( common::ranked_symbol < > ( DefaultSymbolType ( i ), DefaultRankType ( it.first ) ) );
 
 	common::ranked_symbol < > subtreeWildcard = alphabet::SubtreeWildcardSymbol::instance < common::ranked_symbol < > > ( );
 	treeRankedAlphabet.insert ( subtreeWildcard );
@@ -380,13 +380,13 @@ RankedNonlinearPattern < > RandomRankedNonlinearPatternFactory::generateRankedNo
 
 	for ( const std::pair < int, ext::vector < char > > & it : rankedAlphabet )
 		for ( char i : it.second )
-			treeRankedAlphabet.insert ( common::ranked_symbol < > ( i, it.first ) );
+			treeRankedAlphabet.insert ( common::ranked_symbol < > ( DefaultSymbolType ( i ), DefaultRankType ( it.first ) ) );
 
 	if ( singleNonlinearVariable )
-		nonlinearVariables.insert ( common::ranked_symbol < > ( DefaultSymbolType ( alphabet::NonlinearVariableSymbol < > ( DefaultSymbolType ( "A" ) ) ), 0 ) );
+		nonlinearVariables.insert ( common::ranked_symbol < > ( DefaultSymbolType ( alphabet::NonlinearVariableSymbol < > ( DefaultSymbolType ( "A" ) ) ), DefaultRankType ( 0 ) ) );
 	else
 		for ( char i : rankedAlphabet [ 0 ] )
-			nonlinearVariables.insert ( common::ranked_symbol < > ( DefaultSymbolType ( alphabet::NonlinearVariableSymbol < > ( i ) ), 0 ) );
+			nonlinearVariables.insert ( common::ranked_symbol < > ( DefaultSymbolType ( alphabet::NonlinearVariableSymbol < > ( i ) ), DefaultRankType ( 0 ) ) );
 
 	common::ranked_symbol < > subtreeWildcard = alphabet::SubtreeWildcardSymbol::instance < common::ranked_symbol < > > ( );
 	treeRankedAlphabet.insert ( subtreeWildcard );
diff --git a/alib2algo/test-src/automaton/convert/FTAtoPDATest.cpp b/alib2algo/test-src/automaton/convert/FTAtoPDATest.cpp
index c059c776bcc42f545bc819ca18973b0675aafd01..b162b11fe7e3bb64c9c88a8f8033ec055c7e3c4b 100644
--- a/alib2algo/test-src/automaton/convert/FTAtoPDATest.cpp
+++ b/alib2algo/test-src/automaton/convert/FTAtoPDATest.cpp
@@ -23,9 +23,9 @@ void FTAtoPDATest::tearDown() {
 void FTAtoPDATest::testDFTAtoDPDA() {
 	automaton::DFTA < > automaton;
 
-	const common::ranked_symbol < > a ('a', 2);
-	const common::ranked_symbol < > b ('b', 1);
-	const common::ranked_symbol < > c ('c', 0);
+	const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
 	const ext::set<common::ranked_symbol < > > alphabet {a, b, c};
 	automaton.setInputAlphabet(alphabet);
 
@@ -51,9 +51,9 @@ void FTAtoPDATest::testDFTAtoDPDA() {
 void FTAtoPDATest::testNFTAtoNPDA() {
 	automaton::NFTA < > automaton;
 
-	const common::ranked_symbol < > a ('a', 2);
-	const common::ranked_symbol < > b ('b', 1);
-	const common::ranked_symbol < > c ('c', 0);
+	const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
 	const ext::set<common::ranked_symbol < > > alphabet {a, b, c};
 	automaton.setInputAlphabet(alphabet);
 
diff --git a/alib2algo/test-src/automaton/determinize/determinizeTest.cpp b/alib2algo/test-src/automaton/determinize/determinizeTest.cpp
index 3fcc0ce6f64fe3aa3e577a0384ca2cc64fa7dd38..c06a192ca2775b23a0e698bacd17f3bb3847d894 100644
--- a/alib2algo/test-src/automaton/determinize/determinizeTest.cpp
+++ b/alib2algo/test-src/automaton/determinize/determinizeTest.cpp
@@ -108,9 +108,9 @@ void determinizeTest::testDeterminizeVPA() {
 void determinizeTest::testDeterminizeNFTA() {
   automaton::NFTA < > automaton;
 
-  const common::ranked_symbol < > a ('a', 2);
-  const common::ranked_symbol < > b ('b', 1);
-  const common::ranked_symbol < > c ('c', 0);
+  const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+  const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+  const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
   const ext::set<common::ranked_symbol < > > alphabet {a, b, c};
   automaton.setInputAlphabet(alphabet);
 
diff --git a/alib2algo/test-src/automaton/simplify/minimizeTest.cpp b/alib2algo/test-src/automaton/simplify/minimizeTest.cpp
index c480b11bc5cd12b2fce187bc57b9a4f698fdc34c..2f653fca81a6e0a13e7851aa8212932222a86790 100644
--- a/alib2algo/test-src/automaton/simplify/minimizeTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/minimizeTest.cpp
@@ -47,13 +47,13 @@ void minimizeTest::testMinimizeDFTA() {
 	automaton.addFinalState(q[9]);
 	automaton.addFinalState(q[10]);
 
-	const common::ranked_symbol < > a ("a", 3);
-	const common::ranked_symbol < > b ("b", 2);
-	const common::ranked_symbol < > c ("c", 1);
-	const common::ranked_symbol < > d ("d", 0);
-	const common::ranked_symbol < > e ("e", 0);
-	const common::ranked_symbol < > f ("f", 0);
-	const common::ranked_symbol < > g ("g", 0);
+	const common::ranked_symbol < > a (DefaultSymbolType("a"), DefaultRankType(3));
+	const common::ranked_symbol < > b (DefaultSymbolType("b"), DefaultRankType(2));
+	const common::ranked_symbol < > c (DefaultSymbolType("c"), DefaultRankType(1));
+	const common::ranked_symbol < > d (DefaultSymbolType("d"), DefaultRankType(0));
+	const common::ranked_symbol < > e (DefaultSymbolType("e"), DefaultRankType(0));
+	const common::ranked_symbol < > f (DefaultSymbolType("f"), DefaultRankType(0));
+	const common::ranked_symbol < > g (DefaultSymbolType("g"), DefaultRankType(0));
 
 	automaton.addInputSymbol(a);
 	automaton.addInputSymbol(b);
diff --git a/alib2algo/test-src/automaton/simplify/trimTest.cpp b/alib2algo/test-src/automaton/simplify/trimTest.cpp
index 35a9bc5474b537f75baf3b250eadbb9a870f9de3..c2be0d96e5378a3d35117611552cb39bb06aa97e 100644
--- a/alib2algo/test-src/automaton/simplify/trimTest.cpp
+++ b/alib2algo/test-src/automaton/simplify/trimTest.cpp
@@ -75,9 +75,9 @@ void trimTest::testTrimDFTA() {
 	automaton.addFinalState(q[2]);
 	automaton.addFinalState(q[11]);
 
-	const common::ranked_symbol < > a ("a", 2);
-	const common::ranked_symbol < > b ("b", 1);
-	const common::ranked_symbol < > c ("c", 0);
+	const common::ranked_symbol < > a (DefaultSymbolType("a"), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType("b"), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType("c"), DefaultRankType(0));
 	automaton.addInputSymbol(a);
 	automaton.addInputSymbol(b);
 	automaton.addInputSymbol(c);
diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.h b/alib2data/src/alphabet/SubtreeWildcardSymbol.h
index e164422ee1268ecd62dfe959ebf3ba802bcc787d..c95b6dd9c7281cd8b967e16d2434e70229cf5865 100644
--- a/alib2data/src/alphabet/SubtreeWildcardSymbol.h
+++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.h
@@ -74,7 +74,7 @@ inline Symbol SubtreeWildcardSymbol::instance < Symbol > ( ) {
 // TODO make partially specialised when needed by classes or variables, functions can't be partially specialsed
 template < >
 inline common::ranked_symbol < > SubtreeWildcardSymbol::instance < common::ranked_symbol < > > ( ) {
-	return common::ranked_symbol < > ( DefaultSymbolType ( SubtreeWildcardSymbol ( ) ), 0);
+	return common::ranked_symbol < > ( DefaultSymbolType ( SubtreeWildcardSymbol ( ) ), DefaultRankType ( 0 ) );
 }
 
 template < >
diff --git a/alib2data/src/alphabet/VariablesBarSymbol.h b/alib2data/src/alphabet/VariablesBarSymbol.h
index 2f0bd248c248cf57e62595170afa23f23061062c..c64699aff2dfe04d3c75230dd26caad240972773 100644
--- a/alib2data/src/alphabet/VariablesBarSymbol.h
+++ b/alib2data/src/alphabet/VariablesBarSymbol.h
@@ -74,7 +74,7 @@ inline Symbol VariablesBarSymbol::instance < Symbol > ( ) {
 // TODO make partially specialised when needed by classes or variables, functions can be partially specialsed
 template < >
 inline common::ranked_symbol < > VariablesBarSymbol::instance < common::ranked_symbol < > > ( ) {
-	return common::ranked_symbol < > ( DefaultSymbolType ( VariablesBarSymbol ( ) ), 0);
+	return common::ranked_symbol < > ( DefaultSymbolType ( VariablesBarSymbol ( ) ), DefaultRankType ( 0 ) );
 }
 
 template < >
diff --git a/alib2data/src/common/ranked_symbol.hpp b/alib2data/src/common/ranked_symbol.hpp
index 48502df9e414eab6886c5633fe957e8737aeeeba..c12fad0ffc028e52fcd91815efd792d4d6c545bd 100644
--- a/alib2data/src/common/ranked_symbol.hpp
+++ b/alib2data/src/common/ranked_symbol.hpp
@@ -26,17 +26,12 @@ protected:
 	RankType m_rank;
 
 public:
-	explicit ranked_symbol ( int number, unsigned rank );
-	explicit ranked_symbol ( char character, unsigned rank );
-	explicit ranked_symbol ( std::string label, unsigned rank );
-
 	/**
 	 * Creates new symbol with given name and rank.
 	 * @param symbol name of the symbol
 	 * @param rank of the symbol
 	 */
 	explicit ranked_symbol ( SymbolType symbol, RankType rank );
-	explicit ranked_symbol ( SymbolType symbol, unsigned rank );
 
 	/**
 	 * @return name of the symbol
@@ -87,31 +82,11 @@ public:
 	}
 };
 
-template < class SymbolType, class RankType >
-ranked_symbol < SymbolType, RankType >::ranked_symbol(int number, unsigned rank) : m_symbol(SymbolType(number)), m_rank(RankType(rank)) {
-
-}
-
-template < class SymbolType, class RankType >
-ranked_symbol < SymbolType, RankType >::ranked_symbol(char character, unsigned rank) : m_symbol(SymbolType(character)), m_rank(RankType(rank)) {
-
-}
-
-template < class SymbolType, class RankType >
-ranked_symbol < SymbolType, RankType >::ranked_symbol(std::string symbol, unsigned rank) : m_symbol(SymbolType(std::move(symbol))), m_rank(RankType(rank)) {
-
-}
-
 template < class SymbolType, class RankType >
 ranked_symbol < SymbolType, RankType >::ranked_symbol(SymbolType symbol, RankType rank) : m_symbol(std::move(symbol)), m_rank(std::move(rank)) {
 
 }
 
-template < class SymbolType, class RankType >
-ranked_symbol < SymbolType, RankType >::ranked_symbol(SymbolType symbol, unsigned rank) : m_symbol(std::move(symbol)), m_rank(RankType(rank)) {
-
-}
-
 template < class SymbolType, class RankType >
 const SymbolType & ranked_symbol < SymbolType, RankType >::getSymbol ( ) const & {
 	return m_symbol;
diff --git a/alib2data/src/tree/common/TreeAuxiliary.h b/alib2data/src/tree/common/TreeAuxiliary.h
index daad341f8dd6910972311562cd3644444f1c9c16..5fd111a225302507251840bc72e14fa941674388 100644
--- a/alib2data/src/tree/common/TreeAuxiliary.h
+++ b/alib2data/src/tree/common/TreeAuxiliary.h
@@ -59,7 +59,7 @@ ext::tree < common::ranked_symbol < SymbolType, RankType > > TreeAuxiliary::toRa
 	}
 
 	unsigned size = children.size ( );
-	return ext::tree < common::ranked_symbol < SymbolType, RankType > > ( common::ranked_symbol < SymbolType, RankType > ( tree.getData ( ), size ), std::move ( children ) );
+	return ext::tree < common::ranked_symbol < SymbolType, RankType > > ( common::ranked_symbol < SymbolType, RankType > ( tree.getData ( ), RankType ( size ) ), std::move ( children ) );
 }
 
 template < class SymbolType, class RankType >
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index d12ca3074927f62db60302de6d0f5a5226e83fda..5e99433b054358fba67bdc2aa5010cebcab23eb6 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -147,7 +147,7 @@ RankedPattern < SymbolType, RankType >::RankedPattern ( common::ranked_symbol <
 }
 
 template < class SymbolType, class RankType >
-RankedPattern < SymbolType, RankType >::RankedPattern ( const UnrankedPattern < SymbolType > & other ) : RankedPattern ( common::ranked_symbol < SymbolType, RankType > ( other.getSubtreeWildcard ( ), 0 ), TreeAuxiliary::toRankedTree < SymbolType, RankType > ( other.getContent ( ) ) ) {
+RankedPattern < SymbolType, RankType >::RankedPattern ( const UnrankedPattern < SymbolType > & other ) : RankedPattern ( common::ranked_symbol < SymbolType, RankType > ( other.getSubtreeWildcard ( ), RankType ( 0 ) ), TreeAuxiliary::toRankedTree < SymbolType, RankType > ( other.getContent ( ) ) ) {
 }
 
 template < class SymbolType, class RankType >
diff --git a/alib2data/test-src/alphabet/SymbolTest.cpp b/alib2data/test-src/alphabet/SymbolTest.cpp
index c8c556e18626639454536a6430e3ff58afc74c97..2fabec48512abf325b208cee50f659f18adf08c3 100644
--- a/alib2data/test-src/alphabet/SymbolTest.cpp
+++ b/alib2data/test-src/alphabet/SymbolTest.cpp
@@ -66,8 +66,8 @@ void SymbolTest::testOrder ( ) {
 	alphabet::StartSymbol ss;
 	alphabet::EndSymbol es;
 
-	alphabet::RankedSymbol < > rs1 ( DefaultSymbolType ( alphabet::BarSymbol { } ), 0 );
-	alphabet::RankedSymbol < > rs2 ( DefaultSymbolType ( alphabet::BarSymbol { } ), 0 );
+	alphabet::RankedSymbol < > rs1 ( DefaultSymbolType ( alphabet::BarSymbol { } ), DefaultRankType ( 0 ) );
+	alphabet::RankedSymbol < > rs2 ( DefaultSymbolType ( alphabet::BarSymbol { } ), DefaultRankType ( 0 ) );
 
 	CPPUNIT_EXCLUSIVE_OR ( bs < ls, ls < bs );
 
diff --git a/alib2data/test-src/automaton/AutomatonTest.cpp b/alib2data/test-src/automaton/AutomatonTest.cpp
index d6679c59d1886311f99f23902b002a0dc2b61a58..8ac2ebab9ec47ee851e31410c57059ba0a215242 100644
--- a/alib2data/test-src/automaton/AutomatonTest.cpp
+++ b/alib2data/test-src/automaton/AutomatonTest.cpp
@@ -269,9 +269,9 @@ void AutomatonTest::testRHPDATransitions() {
 }
 
 void AutomatonTest::testNFTAParser() {
-	common::ranked_symbol < > a ('a', 2);
-	common::ranked_symbol < > b ('b', 1);
-	common::ranked_symbol < > c ('c', 0);
+	common::ranked_symbol < > a ( DefaultSymbolType ( 'a' ), DefaultRankType ( 2 ) );
+	common::ranked_symbol < > b ( DefaultSymbolType ( 'b' ), DefaultRankType ( 1 ) );
+	common::ranked_symbol < > c ( DefaultSymbolType ( 'c' ), DefaultRankType ( 0 ) );
 
 	DefaultStateType q2 = DefaultStateType ("q2");
 	DefaultStateType q1 = DefaultStateType ("q1");
@@ -313,10 +313,10 @@ void AutomatonTest::testNFTAParser() {
 }
 
 void AutomatonTest::testNFTATransitions() {
-	common::ranked_symbol < > a ('a', 2);
-	common::ranked_symbol < > b ('b', 1);
-	common::ranked_symbol < > c ('c', 0);
-	common::ranked_symbol < > d ('d', 0);
+	common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
+	common::ranked_symbol < > d (DefaultSymbolType('d'), DefaultRankType(0));
 
 	DefaultStateType q2 = DefaultStateType ("q2");
 	DefaultStateType q1 = DefaultStateType ("q1");
diff --git a/alib2data/test-src/rte/RTETest.cpp b/alib2data/test-src/rte/RTETest.cpp
index 29b8dc6ab4f19587fd323915bd01f7caa4effc84..1a027f981f00a0b0966fe9da8ffa2f572a82d9b9 100644
--- a/alib2data/test-src/rte/RTETest.cpp
+++ b/alib2data/test-src/rte/RTETest.cpp
@@ -52,11 +52,11 @@ void RTETest::testCopyConstruct ( ) {
 		 */
 	}
 	{
-		const common::ranked_symbol < > symb_a2 ( 'a', 2 );
-		const common::ranked_symbol < > symb_b0 ( 'b', 0 );
-		const common::ranked_symbol < > symb_c0 ( 'c', 0 );
-		const common::ranked_symbol < > symb_y0 ( 'y', 0 );
-		const common::ranked_symbol < > symb_z0 ( 'z', 0 );
+		const common::ranked_symbol < > symb_a2 ( DefaultSymbolType ( 'a' ), DefaultRankType ( 2 ) );
+		const common::ranked_symbol < > symb_b0 ( DefaultSymbolType ( 'b' ), DefaultRankType ( 0 ) );
+		const common::ranked_symbol < > symb_c0 ( DefaultSymbolType ( 'c' ), DefaultRankType ( 0 ) );
+		const common::ranked_symbol < > symb_y0 ( DefaultSymbolType ( 'y' ), DefaultRankType ( 0 ) );
+		const common::ranked_symbol < > symb_z0 ( DefaultSymbolType ( 'z' ), DefaultRankType ( 0 ) );
 
 		rte::FormalRTE < > frte;
 		frte.setAlphabetSymbols ( { symb_a2, symb_b0, symb_c0 } );
@@ -86,12 +86,12 @@ void RTETest::testCopyConstruct ( ) {
 }
 
 void RTETest::testXMLParser ( ) {
-	const common::ranked_symbol < > symb_a2 ( 'a', 2 );
-	const common::ranked_symbol < > symb_b0 ( 'b', 0 );
-	const common::ranked_symbol < > symb_c0 ( 'c', 0 );
-	const common::ranked_symbol < > symb_d1 ( 'd', 1 );
-	const common::ranked_symbol < > symb_y0 ( 'y', 0 );
-	const common::ranked_symbol < > symb_z0 ( 'z', 0 );
+	const common::ranked_symbol < > symb_a2 ( DefaultSymbolType ( 'a' ), DefaultRankType ( 2 ) );
+	const common::ranked_symbol < > symb_b0 ( DefaultSymbolType ( 'b' ), DefaultRankType ( 0 ) );
+	const common::ranked_symbol < > symb_c0 ( DefaultSymbolType ( 'c' ), DefaultRankType ( 0 ) );
+	const common::ranked_symbol < > symb_d1 ( DefaultSymbolType ( 'd' ), DefaultRankType ( 1 ) );
+	const common::ranked_symbol < > symb_y0 ( DefaultSymbolType ( 'y' ), DefaultRankType ( 0 ) );
+	const common::ranked_symbol < > symb_z0 ( DefaultSymbolType ( 'z' ), DefaultRankType ( 0 ) );
 
 	rte::FormalRTE < > frte;
 
diff --git a/alib2data/test-src/tree/PatternTest.cpp b/alib2data/test-src/tree/PatternTest.cpp
index de8cb924d57424217c144745cce70e9ec6610e03..f5c7ecfdc169575dcad0d94837cca2f31631f049 100644
--- a/alib2data/test-src/tree/PatternTest.cpp
+++ b/alib2data/test-src/tree/PatternTest.cpp
@@ -27,11 +27,11 @@ void PatternTest::tearDown() {
 }
 
 void PatternTest::testRankedPatternParser() {
-	const common::ranked_symbol < > a ('a', 2);
-	const common::ranked_symbol < > b ('b', 1);
-	const common::ranked_symbol < > c ('c', 0);
+	const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
 
-	const common::ranked_symbol < > S (DefaultSymbolType { alphabet::SubtreeWildcardSymbol {} }, 0);
+	const common::ranked_symbol < > S (DefaultSymbolType { alphabet::SubtreeWildcardSymbol {} }, DefaultRankType(0));
 	const ext::set<common::ranked_symbol < >> alphabet {a, b, c, S};
 
 	ext::tree < common::ranked_symbol < > > node3(c, {});
@@ -107,11 +107,11 @@ void PatternTest::testUnrankedPatternParser() {
 		tree2.getContent().nicePrint(std::cout);
 	}
 
-	const common::ranked_symbol < > ra ('a', 2);
-	const common::ranked_symbol < > rb ('b', 1);
-	const common::ranked_symbol < > rc ('c', 0);
+	const common::ranked_symbol < > ra (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > rb (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > rc (DefaultSymbolType('c'), DefaultRankType(0));
 
-	const common::ranked_symbol < > rS { DefaultSymbolType { alphabet::SubtreeWildcardSymbol {} }, 0};
+	const common::ranked_symbol < > rS { DefaultSymbolType { alphabet::SubtreeWildcardSymbol {} }, DefaultRankType(0)};
 	const ext::set<common::ranked_symbol < >> ralphabet {ra, rb, rc, rS};
 
 	ext::tree < common::ranked_symbol < > > rnode3(rc, {});
@@ -127,11 +127,11 @@ void PatternTest::testUnrankedPatternParser() {
 }
 
 void PatternTest::testPrefixRankedPatternParser() {
-	const common::ranked_symbol < > a ('a', 2);
-	const common::ranked_symbol < > b ('b', 1);
-	const common::ranked_symbol < > c ('c', 0);
+	const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
 
-	const common::ranked_symbol < > S (DefaultSymbolType { alphabet::SubtreeWildcardSymbol {} }, 0);
+	const common::ranked_symbol < > S (DefaultSymbolType { alphabet::SubtreeWildcardSymbol {} }, DefaultRankType(0));
 	const ext::set<common::ranked_symbol < >> alphabet {a, b, c, S};
 
 	ext::tree < common::ranked_symbol < > > node3(c, {});
@@ -158,11 +158,11 @@ void PatternTest::testPrefixRankedPatternParser() {
 }
 
 void PatternTest::testPrefixRankedBarPatternParser() {
-	const common::ranked_symbol < > a ('a', 2);
-	const common::ranked_symbol < > b ('b', 1);
-	const common::ranked_symbol < > c ('c', 0);
+	const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
 
-	const common::ranked_symbol < > S (DefaultSymbolType { alphabet::SubtreeWildcardSymbol {} }, 0);
+	const common::ranked_symbol < > S (DefaultSymbolType { alphabet::SubtreeWildcardSymbol {} }, DefaultRankType(0));
 	const ext::set<common::ranked_symbol < >> alphabet {a, b, c, S};
 
 	ext::tree < common::ranked_symbol < > > node3(c, {});
diff --git a/alib2data/test-src/tree/TreeTest.cpp b/alib2data/test-src/tree/TreeTest.cpp
index e46b900ae65f2d9092cb23a7dd0d5066be1cfc9a..6cfe04d6788b8cb4dfe764dcb52dc0739bb60680 100644
--- a/alib2data/test-src/tree/TreeTest.cpp
+++ b/alib2data/test-src/tree/TreeTest.cpp
@@ -34,7 +34,7 @@ ext::tree < common::ranked_symbol < > > prefixToNode(const std::string & s, int
 	for (int i = 0; i < r; i++) {
 		children.push_back(prefixToNode(s, pos));
 	}
-	return ext::tree < common::ranked_symbol < > >(common::ranked_symbol < >(c, r), std::move(children));
+	return ext::tree < common::ranked_symbol < > >(common::ranked_symbol < >(DefaultSymbolType(c), DefaultRankType(r)), std::move(children));
 }
 
 void TreeTest::testRankedTreeParser() {
@@ -49,9 +49,9 @@ void TreeTest::testRankedTreeParser() {
 	  |
 	  \-4.c(0)
 */
-	const common::ranked_symbol < > a ('a', 2);
-	const common::ranked_symbol < > b ('b', 1);
-	const common::ranked_symbol < > c ('c', 0);
+	const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
 
 	const ext::set<common::ranked_symbol < >> alphabet {a, b, c};
 
@@ -82,7 +82,7 @@ void TreeTest::testRankedTreeParser() {
 	int itmp = 0;
 	ext::tree < common::ranked_symbol < > > node = prefixToNode(s, itmp);
 	ext::set<common::ranked_symbol < >> al;
-	for (unsigned i = 0; i < s.length(); i += 2) al.insert(common::ranked_symbol < >(s[i], (int) (s[i+1] - '0')));
+	for (unsigned i = 0; i < s.length(); i += 2) al.insert(common::ranked_symbol < >(DefaultSymbolType(s[i]), DefaultRankType((int) (s[i+1] - '0'))));
 	tree::RankedTree < > t(al, std::move(node));
 	factory::XmlDataFactory::toStdout(t);
 
@@ -109,9 +109,9 @@ void TreeTest::testRankedTreeCompare() {
 	    |
 	    \-8.c(0)
 */
-	const common::ranked_symbol < > a ('a', 2);
-	const common::ranked_symbol < > b ('b', 1);
-	const common::ranked_symbol < > c ('c', 0);
+	const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
 
 	const ext::set<common::ranked_symbol < >> alphabet {a, b, c};
 
@@ -135,11 +135,11 @@ void TreeTest::testRankedTreeCompare() {
 }
 
 void TreeTest::testRankedTreeSymbolValidityCheck() {
-	const common::ranked_symbol < > a ('a', 2);
-	const common::ranked_symbol < > b ('b', 1);
-	const common::ranked_symbol < > c ('c', 0);
-	const common::ranked_symbol < > d ('d', 0);
-	const common::ranked_symbol < > e ('e', 0);
+	const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
+	const common::ranked_symbol < > d (DefaultSymbolType('d'), DefaultRankType(0));
+	const common::ranked_symbol < > e (DefaultSymbolType('e'), DefaultRankType(0));
 
 	const ext::set<common::ranked_symbol < >> alphabet {a, b, c, e};
 
@@ -279,9 +279,9 @@ void TreeTest::testUnrankedTreeSymbolValidityCheck() {
 void TreeTest::testPrefixRankedBarParser() {
 	const DefaultSymbolType bar{alphabet::BarSymbol{}};
 
-	const common::ranked_symbol < > a ('a', 2);
-	const common::ranked_symbol < > b ('b', 1);
-	const common::ranked_symbol < > c ('c', 0);
+	const common::ranked_symbol < > a (DefaultSymbolType('a'), DefaultRankType(2));
+	const common::ranked_symbol < > b (DefaultSymbolType('b'), DefaultRankType(1));
+	const common::ranked_symbol < > c (DefaultSymbolType('c'), DefaultRankType(0));
 
 	const ext::set<common::ranked_symbol < >> alphabet {a, b, c};
 
diff --git a/alib2str/src/tree/string/common/TreeFromStringParserCommon.h b/alib2str/src/tree/string/common/TreeFromStringParserCommon.h
index 48f620c2931dbbe2b93e9f1c9f1faace53fc50cd..1d340f671b50f1605bd9c95de8c2c9bdccb572f3 100644
--- a/alib2str/src/tree/string/common/TreeFromStringParserCommon.h
+++ b/alib2str/src/tree/string/common/TreeFromStringParserCommon.h
@@ -36,7 +36,7 @@ ext::tree < common::ranked_symbol < SymbolType, RankType > > TreeFromStringParse
 		return ext::tree < common::ranked_symbol < SymbolType, RankType > > ( alphabet::SubtreeWildcardSymbol::instance < common::ranked_symbol < SymbolType, RankType > > ( ), { } );
 	} else if ( token.type == TreeFromStringLexer::TokenType::NONLINEAR_VARIABLE ) {
 		isPattern = true;
-		common::ranked_symbol < SymbolType, RankType > nonlinearVariable ( SymbolType ( alphabet::NonlinearVariableSymbol < SymbolType > ( SymbolType ( token.value ) ) ), 0 );
+		common::ranked_symbol < SymbolType, RankType > nonlinearVariable ( SymbolType ( alphabet::NonlinearVariableSymbol < SymbolType > ( SymbolType ( token.value ) ) ), RankType ( 0 ) );
 		nonlinearVariables.insert ( nonlinearVariable );
 		return ext::tree < common::ranked_symbol < SymbolType, RankType > > ( std::move ( nonlinearVariable ), { } );
 	} else {
@@ -53,7 +53,7 @@ ext::tree < common::ranked_symbol < SymbolType, RankType > > TreeFromStringParse
 		for ( unsigned i = 0; i < rank; i++ )
 			childs.emplace_back ( ext::tree < common::ranked_symbol < SymbolType, RankType > > ( parseRankedContent < SymbolType, RankType > ( input, isPattern, nonlinearVariables ) ) );
 
-		return ext::tree < common::ranked_symbol < SymbolType, RankType > > ( common::ranked_symbol < SymbolType, RankType > ( std::move ( symbol ), rank ), std::move ( childs ) );
+		return ext::tree < common::ranked_symbol < SymbolType, RankType > > ( common::ranked_symbol < SymbolType, RankType > ( std::move ( symbol ), RankType ( rank ) ), std::move ( childs ) );
 	}
 }