diff --git a/alib2data/src/alphabet/common/SymbolNormalize.h b/alib2data/src/alphabet/common/SymbolNormalize.h
index 996090ca3b488d4796b8145df76eee9f6403e602..685989cdd25a107318fee6991f2c6e2b54d065a6 100644
--- a/alib2data/src/alphabet/common/SymbolNormalize.h
+++ b/alib2data/src/alphabet/common/SymbolNormalize.h
@@ -21,6 +21,12 @@ namespace alphabet {
  * This class contains methods to print XML representation of automata to the output stream.
  */
 class SymbolNormalize {
+	template < class SymbolType >
+	static DefaultSymbolType normalizeSymbolInternal ( typename std::enable_if < std::is_constructible < DefaultSymbolType, SymbolType >::value, SymbolType && >::type symbol );
+
+	template < class SymbolType >
+	static DefaultSymbolType normalizeSymbolInternal ( typename std::enable_if < ! std::is_constructible < DefaultSymbolType, SymbolType >::value, SymbolType && >::type symbol );
+
 public:
 	template < class SymbolType >
 	static std::set < DefaultSymbolType > normalizeAlphabet ( std::set < SymbolType > && symbols );
@@ -60,13 +66,23 @@ std::set < std::ranked_symbol < DefaultSymbolType, DefaultRankType > > SymbolNor
 }
 
 template < class SymbolType >
-DefaultSymbolType SymbolNormalize::normalizeSymbol ( SymbolType && symbol ) {
+DefaultSymbolType SymbolNormalize::normalizeSymbolInternal ( typename std::enable_if < std::is_constructible < DefaultSymbolType, SymbolType >::value, SymbolType && >::type symbol ) {
+	return DefaultSymbolType ( std::move ( symbol ) );
+}
+
+template < class SymbolType >
+DefaultSymbolType SymbolNormalize::normalizeSymbolInternal ( typename std::enable_if < ! std::is_constructible < DefaultSymbolType, SymbolType >::value, SymbolType && >::type symbol ) {
 	return DefaultSymbolType ( alib::AnyObject < SymbolType > ( std::move ( symbol ) ) );
 }
 
+template < class SymbolType >
+DefaultSymbolType SymbolNormalize::normalizeSymbol ( SymbolType && symbol ) {
+	return SymbolNormalize::normalizeSymbolInternal < SymbolType > ( std::move ( symbol ) );
+}
+
 template < class SymbolType, class RankType >
 std::ranked_symbol < DefaultSymbolType, DefaultRankType > SymbolNormalize::normalizeRankedSymbol ( std::ranked_symbol < SymbolType, RankType > && symbol ) {
-	return std::ranked_symbol < DefaultSymbolType, DefaultRankType > ( DefaultSymbolType ( alib::AnyObject < SymbolType > ( std::move ( symbol.getSymbol ( ) ) ) ), DefaultRankType ( std::move ( symbol.getRank ( ) ) ) );
+	return std::ranked_symbol < DefaultSymbolType, DefaultRankType > ( normalizeSymbol ( std::move ( symbol.getSymbol ( ) ) ), DefaultRankType ( std::move ( symbol.getRank ( ) ) ) );
 }
 
 template < class SymbolType >