diff --git a/alib2algo/src/automaton/properties/ReachableStates.h b/alib2algo/src/automaton/properties/ReachableStates.h
index 129ee70da6ab900d44280b284ea477c4207f8b2a..74161caa412319d474b99e7d4e93eec2db77287b 100644
--- a/alib2algo/src/automaton/properties/ReachableStates.h
+++ b/alib2algo/src/automaton/properties/ReachableStates.h
@@ -30,16 +30,18 @@ public:
 	/**
 	 * Removes dead states from FSM. Melichar 2.29
 	 */
-	template < class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > >
-	static ext::set<StateType> reachableStates( const T & fsm );
+	template < class T >
+	static ext::set < typename automaton::StateTypeOfAutomaton < T > > reachableStates( const T & fsm );
 	template < class SymbolType, class StateType >
 	static ext::set<StateType> reachableStates( const automaton::MultiInitialStateNFA < SymbolType, StateType > & fsm );
 	template < class SymbolType, class StateType >
 	static ext::set<StateType> reachableStates( const automaton::DFA < SymbolType, StateType > & fsm );
 };
 
-template < class T, class SymbolType, class StateType >
-ext::set<StateType> ReachableStates::reachableStates( const T & fsm ) {
+template < class T >
+ext::set < typename automaton::StateTypeOfAutomaton < T > > ReachableStates::reachableStates( const T & fsm ) {
+	using StateType = typename automaton::StateTypeOfAutomaton < T >;
+
 	// 1a
 	ext::deque<ext::set<StateType>> Qi;
 	Qi.push_back( ext::set<StateType>( ) );
diff --git a/alib2algo/src/automaton/properties/UsefullStates.h b/alib2algo/src/automaton/properties/UsefullStates.h
index 6a3b40bade75bca441bcdd0d4469e76780923fb3..49869b121a7ac8f9fdafb34c828ddf9defd33436 100644
--- a/alib2algo/src/automaton/properties/UsefullStates.h
+++ b/alib2algo/src/automaton/properties/UsefullStates.h
@@ -30,14 +30,16 @@ public:
 	/**
 	 * Removes dead states from FSM. Melichar 2.32
 	 */
-	template < class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > >
-	static ext::set<StateType> usefullStates( const T & fsm );
+	template < class T >
+	static ext::set < typename automaton::StateTypeOfAutomaton < T > > usefullStates( const T & fsm );
 	template < class SymbolType, class StateType >
 	static ext::set<StateType> usefullStates( const automaton::DFA < SymbolType, StateType > & fsm );
 };
 
-template < class T, class SymbolType, class StateType >
-ext::set<StateType> UsefullStates::usefullStates( const T & fsm ) {
+template < class T >
+ext::set < typename automaton::StateTypeOfAutomaton < T > > UsefullStates::usefullStates( const T & fsm ) {
+	using StateType = typename automaton::StateTypeOfAutomaton < T >;
+
 	// 1a
 	ext::deque<ext::set<StateType>> Qi;
 	Qi.push_back( ext::set<StateType>( ) );
diff --git a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h
index 51cf3fd84bb7dd0b283223dc64f62e0c3e34fbbe..5a9bfc0e4e1559a5cd75956880dc54c28c2bc731 100644
--- a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h
+++ b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h
@@ -27,7 +27,7 @@ public:
 	/**
 	 * Removes dead states from FSM. Melichar 2.29
 	 */
-	template<class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > >
+	template < class T >
 	static T remove( const T & automaton );
 	template < class SymbolType, class StateType >
 	static automaton::DFA < SymbolType, StateType > remove( const automaton::DFA < SymbolType, StateType > & fsm );
@@ -37,8 +37,10 @@ public:
 	static automaton::DFTA < SymbolType, RankType, StateType > remove( const automaton::DFTA < SymbolType, RankType, StateType > & dfta );
 };
 
-template<class T, class SymbolType, class StateType >
-T UnreachableStatesRemover::remove( const T & fsm ) {
+template < class T >
+T UnreachableStatesRemover::remove ( const T & fsm ) {
+	using StateType = typename automaton::StateTypeOfAutomaton < T >;
+
 	// 1a
 	ext::set<StateType> Qa = automaton::properties::ReachableStates::reachableStates( fsm );
 
diff --git a/alib2algo/src/automaton/simplify/UselessStatesRemover.h b/alib2algo/src/automaton/simplify/UselessStatesRemover.h
index 3d3489161e3cd2ae99733785f5f424ea5f3239de..175ed5b0f88b9644a8e3c63f7ec525ee6153328f 100644
--- a/alib2algo/src/automaton/simplify/UselessStatesRemover.h
+++ b/alib2algo/src/automaton/simplify/UselessStatesRemover.h
@@ -27,7 +27,7 @@ public:
 	/**
 	 * Removes dead states from FSM. Melichar 2.29
 	 */
-	template<class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > >
+	template < class T >
 	static T remove( const T & automaton );
 	template < class SymbolType, class StateType >
 	static automaton::DFA < SymbolType, StateType > remove( const automaton::DFA < SymbolType, StateType > & fsm );
@@ -37,8 +37,10 @@ public:
 	static automaton::DFTA < SymbolType, RankType, StateType > remove( const automaton::DFTA < SymbolType, RankType, StateType > & dfta );
 };
 
-template < class T, class SymbolType, class StateType >
+template < class T >
 T UselessStatesRemover::remove( const T & fsm ) {
+	using StateType = typename automaton::StateTypeOfAutomaton < T >;
+
 	// 1.
 	ext::set<StateType> Qu = automaton::properties::UsefullStates::usefullStates( fsm );