diff --git a/alib2algo/src/automaton/generate/RandomAutomatonFactory.cpp b/alib2algo/src/automaton/generate/RandomAutomatonFactory.cpp
index 0f5c0e565e6918a4002e08eaa23837e316bcf1d5..4c26ae37ea13a4e2be960a71e20e35d272a31c77 100644
--- a/alib2algo/src/automaton/generate/RandomAutomatonFactory.cpp
+++ b/alib2algo/src/automaton/generate/RandomAutomatonFactory.cpp
@@ -3,23 +3,6 @@
 
 namespace automaton::generate {
 
-automaton::NFA < std::string, unsigned > RandomAutomatonFactory::generateNFA( size_t statesCount, size_t alphabetSize, bool randomizedAlphabet, double density ) {
-	constexpr size_t ENGLISH_ALPHABET_SIZE = 26;
-	if(alphabetSize > ENGLISH_ALPHABET_SIZE)
-		throw exception::CommonException("Too big alphabet.");
-
-	ext::deque < std::string > alphabet;
-	for(char i = 'a'; i <= 'z'; i++)
-		alphabet.push_back ( std::string ( 1, i ) );
-
-	if(randomizedAlphabet)
-		shuffle(alphabet.begin(), alphabet.end(), ext::random_devices::semirandom);
-
-	alphabet.resize ( alphabetSize );
-
-	return automaton::generate::RandomAutomatonFactory::LeslieConnectedNFA( statesCount, alphabet, density );
-}
-
 unsigned RandomAutomatonFactory::ithAccessibleState ( const ext::deque < bool > & VStates, size_t i ) {
 	i ++;
 	for( size_t j = 0; j < VStates.size ( ); j++ ) {
@@ -55,13 +38,4 @@ auto GenerateNFA1 = registration::AbstractRegister < automaton::generate::Random
 @param density density of the transition function (0-100)\n\
 @return random nondeterministic finite automaton" );
 
-auto GenerateNFA2 = registration::AbstractRegister < automaton::generate::RandomAutomatonFactory, automaton::NFA < std::string, unsigned >, size_t, size_t, bool, double > ( automaton::generate::RandomAutomatonFactory::generateNFA, abstraction::AlgorithmCategories::AlgorithmCategory::DEFAULT, "statesCount", "alphabetSize", "randomizedAlphabet", "density" ).setDocumentation (
-"Generates a random finite automaton.\n\
-\n\
-@param statesCount number of states in the generated automaton\n\
-@param alphabetSize size of the alphabet (1-26)\n\
-@param randomizedAlphabet selects random symbols from a-z range if true\n\
-@param density density of the transition function (0-100). 100 means every possible transition is created\n\
-@return random nondeterministic finite automaton" );
-
 } /* namespace */
diff --git a/alib2algo/src/automaton/generate/RandomAutomatonFactory.h b/alib2algo/src/automaton/generate/RandomAutomatonFactory.h
index 5f6bafde60475b53c67efdc805070447168cd2d9..cf74489534a5d64b269b695da2e361c7c7cd1be8 100644
--- a/alib2algo/src/automaton/generate/RandomAutomatonFactory.h
+++ b/alib2algo/src/automaton/generate/RandomAutomatonFactory.h
@@ -54,20 +54,6 @@ public:
 	template < class SymbolType >
 	static automaton::NFA < SymbolType, unsigned > generateNFA ( size_t statesCount, const ext::set < SymbolType > & alphabet, double density );
 
-	/**
-	 * \overload
-	 *
-	 * Generates a random finite automaton.
-	 *
-	 * \param statesCount number of states in the generated automaton
-	 * \param alphabetSize size of the alphabet (1-26)
-	 * \param randomizedAlphabet selects random symbols from a-z range if true
-	 * \param density density of the transition function (0-100). 100 means every possible transition is created
-	 *
-	 * \return random nondeterministic finite automaton
-	 */
-	static automaton::NFA < std::string, unsigned > generateNFA ( size_t statesCount, size_t alphabetSize, bool randomizedAlphabet, double density );
-
 private:
 	/**
 	 * Selects ith accessible state form \p VStates.
diff --git a/tests/aql/AutomataConcatenation.aql b/tests/aql/AutomataConcatenation.aql
index 066ea23b55c0e706d7649285e380c0c8e59e76e8..6aa11491fa24c4a8310b0b64dcd2cb1fb80dc405 100644
--- a/tests/aql/AutomataConcatenation.aql
+++ b/tests/aql/AutomataConcatenation.aql
@@ -1,8 +1,8 @@
 begin
   declare auto $iter = 200;
   while ( -- $iter ) do begin
-    execute automaton::generate::RandomAutomatonFactory 10 3 false 5 > $a1;
-    execute automaton::generate::RandomAutomatonFactory 10 3 false 5 > $a2;
+    execute automaton::generate::RandomAutomatonFactory 10 <(alphabet::generate::GenerateAlphabet 3 false true) 5 > $a1;
+    execute automaton::generate::RandomAutomatonFactory 10 <(alphabet::generate::GenerateAlphabet 3 false true) 5 > $a2;
 
     execute automaton::transform::AutomataConcatenation                  $a1 $a2 |                                                 automaton::determinize::Determinize - | automaton::simplify::Trim - | automaton::simplify::Minimize - | automaton::simplify::Normalize - > $r1;
     execute automaton::transform::AutomataConcatenationEpsilonTransition $a1 $a2 | automaton::simplify::EpsilonRemoverIncoming - | automaton::determinize::Determinize - | automaton::simplify::Trim - | automaton::simplify::Minimize - | automaton::simplify::Normalize - > $r2;
diff --git a/tests/aql/AutomatonIteration.aql b/tests/aql/AutomatonIteration.aql
index 820de5f8b7546299760efed80b4c1f6ac3355a63..27878aa1403e48e57d81e2ceecf2d9d23bfa9981 100644
--- a/tests/aql/AutomatonIteration.aql
+++ b/tests/aql/AutomatonIteration.aql
@@ -1,7 +1,7 @@
 begin
   declare auto $iter = 100;
   while ( -- $iter ) do begin
-    execute automaton::generate::RandomAutomatonFactory 10 3 true 5 > $aut;
+    execute automaton::generate::RandomAutomatonFactory 10 <(alphabet::generate::GenerateAlphabet 3 true true) 5 > $aut;
 
     execute automaton::transform::AutomatonIteration $aut | automaton::determinize::Determinize - | automaton::simplify::Trim - | automaton::simplify::Minimize - | automaton::simplify::Normalize - > $iter1;
 
diff --git a/tests/aql/InfiniteLanguage.aql b/tests/aql/InfiniteLanguage.aql
index 7890557621735b719852cfe628c5b5e2341f690c..2224b0271418d18d11fea279ffdbc5efb150e89f 100644
--- a/tests/aql/InfiniteLanguage.aql
+++ b/tests/aql/InfiniteLanguage.aql
@@ -1,7 +1,7 @@
 begin
   declare auto $iter = 100;
   while ( -- $iter ) do begin
-    execute automaton::generate::RandomAutomatonFactory 6 1 false 5 > $aut;
+    execute automaton::generate::RandomAutomatonFactory 6 <(alphabet::generate::GenerateAlphabet 1 false true) 5 > $aut;
     execute ToRegExpStateElimination $aut > $regexp;
 
     execute automaton::properties::InfiniteLanguage $aut > $r1;
diff --git a/tests/aql/functions.aql b/tests/aql/functions.aql
index 4e99e39e0791533d02bec4dcbdbd4a09043191e8..9229737ee9ded4153fe9ee9fa3c9fe305d665354 100644
--- a/tests/aql/functions.aql
+++ b/tests/aql/functions.aql
@@ -2,5 +2,5 @@ function automaton::simplify::ToMinimalDFA ( auto $automaton ) returning auto be
   return batch automaton::simplify::EpsilonRemoverIncoming $automaton | automaton::determinize::Determinize - | automaton::simplify::Trim - | automaton::simplify::Minimize - | automaton::simplify::Normalize -;
 end
 
-print automaton::generate::RandomAutomatonFactory 5 3 true 25 | automaton::simplify::ToMinimalDFA -
-print expression automaton::simplify::ToMinimalDFA ( automaton::generate::RandomAutomatonFactory ( 5, 3, "true", 25 ) )
+print automaton::generate::RandomAutomatonFactory 5 <(alphabet::generate::GenerateAlphabet 3 true true) 25 | automaton::simplify::ToMinimalDFA -
+print expression automaton::simplify::ToMinimalDFA ( automaton::generate::RandomAutomatonFactory ( 5, alphabet::generate::GenerateAlphabet (3, "true", "true"), 25 ) )
diff --git a/tests/cppaql/conversionsTest.cpp b/tests/cppaql/conversionsTest.cpp
index b62795c7da70fdd527b8cf1e06dca1583775712e..621175c58fe46043d987bdf89032c3098be55167 100644
--- a/tests/cppaql/conversionsTest.cpp
+++ b/tests/cppaql/conversionsTest.cpp
@@ -11,7 +11,7 @@ const double   RAND_DENSITY  = 2.5;
 const size_t   ITERATIONS = 50;
 
 std::string qGenNFA ( ) {
-	return ext::concat ( "execute automaton::generate::RandomAutomatonFactory (size_t)", rand ( ) % RAND_STATES + 1, " (size_t)", rand ( ) % RAND_ALPHABET + 1, " (bool)true (double)\"", RAND_DENSITY, "\"" );
+	return ext::concat ( "execute automaton::generate::RandomAutomatonFactory (size_t)", rand ( ) % RAND_STATES + 1, " <(alphabet::generate::GenerateAlphabet (size_t)", rand ( ) % RAND_ALPHABET + 1, " true true) (double)\"", RAND_DENSITY, "\"" );
 }
 
 static const std::string qMinimize ( "automaton::simplify::efficient::EpsilonRemoverIncoming - | automaton::determinize::Determinize - | "
diff --git a/tests/cppaql/minimizeTest.cpp b/tests/cppaql/minimizeTest.cpp
index 0f53a3cde52e52cd2c97f32ac8a48c23ea0e7b5f..85fc215827af55afea74867f1d3e89b350d39b6e 100644
--- a/tests/cppaql/minimizeTest.cpp
+++ b/tests/cppaql/minimizeTest.cpp
@@ -11,7 +11,7 @@ const double   RAND_DENSITY  = 2.5;
 const size_t   ITERATIONS = 100;
 
 static std::string qGenNFA ( ) {
-	return ext::concat ( "execute automaton::generate::RandomAutomatonFactory (size_t)", rand ( ) % RAND_STATES + 1, " (size_t)", rand ( ) % RAND_ALPHABET + 1, " (bool)true (double)\"", RAND_DENSITY, "\"" );
+	return ext::concat ( "execute automaton::generate::RandomAutomatonFactory (size_t)", rand ( ) % RAND_STATES + 1, " <(alphabet::generate::GenerateAlphabet (size_t)", rand ( ) % RAND_ALPHABET + 1, " (bool)true true) (double)\"", RAND_DENSITY, "\"" );
 }
 
 TEST_CASE ( "Minimization FA test", "[integration]" ) {