diff --git a/alib2algo/src/regexp/convert/ToAutomaton.cpp b/alib2algo/src/regexp/convert/ToAutomaton.cpp
index 3ae1558fe05d64ec6feac1f72576432cd7e28a3c..e943f5b29887262092481a3cb1b5ca9e3716962b 100644
--- a/alib2algo/src/regexp/convert/ToAutomaton.cpp
+++ b/alib2algo/src/regexp/convert/ToAutomaton.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "ToAutomaton.h"
-#include "ToAutomatonGlushkov.h"
 
 namespace regexp {
 
@@ -16,16 +15,7 @@ automaton::Automaton ToAutomaton::convert(const regexp::RegExp& regexp) {
 	return dispatch(regexp.getData());
 }
 
-automaton::Automaton ToAutomaton::convert(const regexp::FormalRegExp < > & regexp) {
-	return automaton::Automaton(ToAutomatonGlushkov::convert(regexp));
-}
-
 auto ToAutomatonFormalRegExp = ToAutomaton::RegistratorWrapper<automaton::Automaton, regexp::FormalRegExp < > >(ToAutomaton::convert);
-
-automaton::Automaton ToAutomaton::convert(const regexp::UnboundedRegExp < > & regexp) {
-	return automaton::Automaton(ToAutomatonGlushkov::convert(regexp));
-}
-
 auto ToAutomatonUnboundedRegExp = ToAutomaton::RegistratorWrapper<automaton::Automaton, regexp::UnboundedRegExp < > >( ToAutomaton::convert);
 
 } /* namespace convert */
diff --git a/alib2algo/src/regexp/convert/ToAutomaton.h b/alib2algo/src/regexp/convert/ToAutomaton.h
index bcbb8b9e9fbab7b0fdcc096ce972e1eabe6ec078..389da3e8fd99674c7a837daf7184cbcdd39132c7 100644
--- a/alib2algo/src/regexp/convert/ToAutomaton.h
+++ b/alib2algo/src/regexp/convert/ToAutomaton.h
@@ -16,6 +16,8 @@
 
 #include <automaton/Automaton.h>
 
+#include "ToAutomatonGlushkov.h"
+
 namespace regexp {
 
 namespace convert {
@@ -28,11 +30,23 @@ public:
 	 */
 	static automaton::Automaton convert(const regexp::RegExp& regexp);
 
-	static automaton::Automaton convert(const regexp::FormalRegExp < > & regexp);
-	static automaton::Automaton convert(const regexp::UnboundedRegExp < > & regexp);
+	template < class SymbolType >
+	static automaton::Automaton convert(const regexp::FormalRegExp < SymbolType > & regexp);
+	template < class SymbolType >
+	static automaton::Automaton convert(const regexp::UnboundedRegExp < SymbolType > & regexp);
 
 };
 
+template < class SymbolType >
+automaton::Automaton ToAutomaton::convert(const regexp::FormalRegExp < SymbolType > & regexp) {
+	return automaton::Automaton(ToAutomatonGlushkov::convert(regexp));
+}
+
+template < class SymbolType >
+automaton::Automaton ToAutomaton::convert(const regexp::UnboundedRegExp < SymbolType > & regexp) {
+	return automaton::Automaton(ToAutomatonGlushkov::convert(regexp));
+}
+
 } /* namespace convert */
 
 } /* namespace regexp */
diff --git a/alib2algo/src/regexp/convert/ToGrammar.cpp b/alib2algo/src/regexp/convert/ToGrammar.cpp
index d02b338ab0703d891e993e7d509313c4624a6842..0b51d8f6ebc172759077921d63e83cf576ab34f2 100644
--- a/alib2algo/src/regexp/convert/ToGrammar.cpp
+++ b/alib2algo/src/regexp/convert/ToGrammar.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "ToGrammar.h"
-#include "ToGrammarRightRGGlushkov.h"
 
 namespace regexp {
 
@@ -16,16 +15,7 @@ grammar::Grammar ToGrammar::convert(const regexp::RegExp& regexp) {
 	return dispatch(regexp.getData());
 }
 
-grammar::Grammar ToGrammar::convert(const regexp::FormalRegExp < > & regexp) {
-	return grammar::Grammar(ToGrammarRightRGGlushkov::convert(regexp));
-}
-
 auto ToGrammarFormalRegExp = ToGrammar::RegistratorWrapper<grammar::Grammar, regexp::FormalRegExp < > >(ToGrammar::convert);
-
-grammar::Grammar ToGrammar::convert(const regexp::UnboundedRegExp < > & regexp) {
-	return grammar::Grammar(ToGrammarRightRGGlushkov::convert(regexp));
-}
-
 auto ToGrammarUnboundedRegExp = ToGrammar::RegistratorWrapper<grammar::Grammar, regexp::UnboundedRegExp < > >(ToGrammar::convert);
 
 } /* namespace convert */
diff --git a/alib2algo/src/regexp/convert/ToGrammar.h b/alib2algo/src/regexp/convert/ToGrammar.h
index f302528b674350b0d082ff5f9d5a8c826cabcf25..4af1274e848cc20415023b5b83a092751ff023ad 100644
--- a/alib2algo/src/regexp/convert/ToGrammar.h
+++ b/alib2algo/src/regexp/convert/ToGrammar.h
@@ -14,6 +14,8 @@
 #include <regexp/RegExp.h>
 #include <regexp/RegExpFeatures.h>
 
+#include "ToGrammarRightRGGlushkov.h"
+
 namespace regexp {
 
 namespace convert {
@@ -26,11 +28,23 @@ public:
 	 */
 	static grammar::Grammar convert(const regexp::RegExp& regexp);
 
-	static grammar::Grammar convert(const regexp::FormalRegExp < > & regexp);
-	static grammar::Grammar convert(const regexp::UnboundedRegExp < > & regexp);
+	template < class SymbolType >
+	static grammar::Grammar convert(const regexp::FormalRegExp < SymbolType > & regexp);
+	template < class SymbolType >
+	static grammar::Grammar convert(const regexp::UnboundedRegExp < SymbolType > & regexp);
 
 };
 
+template < class SymbolType >
+grammar::Grammar ToGrammar::convert(const regexp::FormalRegExp < SymbolType > & regexp) {
+	return grammar::Grammar(ToGrammarRightRGGlushkov::convert(regexp));
+}
+
+template < class SymbolType >
+grammar::Grammar ToGrammar::convert(const regexp::UnboundedRegExp < SymbolType > & regexp) {
+	return grammar::Grammar(ToGrammarRightRGGlushkov::convert(regexp));
+}
+
 } /* namespace convert */
 
 } /* namespace regexp */