diff --git a/aconversions/src/conversions/rg2fa/LRGtoFAConverter.cpp b/aconversions/src/conversions/rg2fa/LRGtoFAConverter.cpp
index 5f8dee7c709ac14c68e536014a673d507c26d400..50e91b8b5fa3b64cad2492a17b1423b7c6e85561 100644
--- a/aconversions/src/conversions/rg2fa/LRGtoFAConverter.cpp
+++ b/aconversions/src/conversions/rg2fa/LRGtoFAConverter.cpp
@@ -21,23 +21,23 @@ FSM LRGtoFAConverter::convert( void )
     m_automaton.addState( startState );
 
     // step 3, constructing \delta
-    for( set<Rule>::const_iterator i = m_grammar.getRules().begin(); i != m_grammar.getRules().end(); i++ )
+    for( const auto & rule : m_grammar.getRules( ) )
     {
-        if( GrammarUtils::isEpsilonRule( *i ) )
+        if( m_grammar.isEpsilonRule( rule ) )
             continue;
 
-        State current( GrammarUtils::getFirstSymbolFromSet( i->getLeftSide(), m_grammar.getNonTerminalSymbols() ) -> getSymbol() );
-        Symbol input( GrammarUtils::getFirstSymbolFromSet( i->getRightSide(), m_grammar.getTerminalSymbols() ) -> getSymbol() );
+        State current( GrammarUtils::getFirstSymbolFromSet( rule.getLeftSide( ), m_grammar.getNonTerminalSymbols() )->getSymbol( ) );
+        Symbol input( GrammarUtils::getFirstSymbolFromSet( rule.getRightSide( ), m_grammar.getTerminalSymbols() )->getSymbol( ) );
 
         // if B->a => \delta(B,a)=AState
-        if( i->getRightSide().size() == 1 )
+        if( rule.getRightSide( ).size( ) == 1 )
         {
             m_automaton.addTransition( startState, input, current );
         }
         // if B->aC => \delta(B,a)=C
-        else if( i->getRightSide().size() == 2 )
+        else if( rule.getRightSide( ).size( ) == 2 )
         {
-            State next( GrammarUtils::getFirstSymbolFromSet( i -> getRightSide(), m_grammar.getNonTerminalSymbols() ) -> getSymbol() );
+            State next( GrammarUtils::getFirstSymbolFromSet( rule.getRightSide( ), m_grammar.getNonTerminalSymbols( ) ) -> getSymbol( ) );
             m_automaton.addTransition( next, input, current );
         }
     }
@@ -47,8 +47,8 @@ FSM LRGtoFAConverter::convert( void )
 
     // step 5
     m_automaton.addFinalState( State( m_grammar.getStartSymbol().getSymbol() ) );
-    for( set<Rule>::const_iterator i = m_grammar.getRules().begin(); i != m_grammar.getRules().end(); i++ )
-        if( GrammarUtils::isEpsilonRule( *i ) )
+    for( const auto & rule : m_grammar.getRules( ) )
+        if( m_grammar.isEpsilonRule( rule ) )
             m_automaton.addFinalState( startState );
 
     return m_automaton;
diff --git a/aconversions/src/conversions/rg2fa/RRGtoFAConverter.cpp b/aconversions/src/conversions/rg2fa/RRGtoFAConverter.cpp
index 996c1bdbad0f2de9d56194bc3ff1b07f8d108c2a..28104e15831e7b79af33525b27fa1c7a231e9c0d 100644
--- a/aconversions/src/conversions/rg2fa/RRGtoFAConverter.cpp
+++ b/aconversions/src/conversions/rg2fa/RRGtoFAConverter.cpp
@@ -20,21 +20,21 @@ FSM RRGtoFAConverter::convert( void )
     State AState = AutomatonUtils::createUniqueState( "A", m_automaton.getStates() );
     m_automaton.addState( AState );
 
-    for( set<Rule>::const_iterator i = m_grammar.getRules().begin(); i != m_grammar.getRules().end(); i++ )
+    for( const auto & rule : m_grammar.getRules( ) )
     {
-        if( GrammarUtils::isEpsilonRule(*i) )
+        if( m_grammar.isEpsilonRule( rule ) )
             continue;
 
-        State current( GrammarUtils::getFirstSymbolFromSet( i->getLeftSide(), m_grammar.getNonTerminalSymbols() ) -> getSymbol() );
-        Symbol input( GrammarUtils::getFirstSymbolFromSet( i->getRightSide(), m_grammar.getTerminalSymbols() ) -> getSymbol() );
+        State current( GrammarUtils::getFirstSymbolFromSet( rule.getLeftSide(), m_grammar.getNonTerminalSymbols( ) ) -> getSymbol( ) );
+        Symbol input( GrammarUtils::getFirstSymbolFromSet( rule.getRightSide(), m_grammar.getTerminalSymbols( ) ) -> getSymbol( ) );
 
-        if( i->getRightSide().size() == 1 ) // if B->a => \delta(B,a)=AState
+        if( rule.getRightSide( ).size( ) == 1 ) // if B->a => \delta(B,a)=AState
         {
             m_automaton.addTransition( current, input, AState );
         }
-        else if( i->getRightSide().size() == 2 ) // if B->aC => \delta(B,a)=C
+        else if( rule.getRightSide( ).size( ) == 2 ) // if B->aC => \delta(B,a)=C
         {
-            State next( GrammarUtils::getFirstSymbolFromSet( i -> getRightSide(), m_grammar.getNonTerminalSymbols() ) -> getSymbol() );
+            State next( GrammarUtils::getFirstSymbolFromSet( rule.getRightSide( ), m_grammar.getNonTerminalSymbols( ) ) -> getSymbol( ) );
             m_automaton.addTransition( current, input, next );
         }
     }
@@ -44,9 +44,9 @@ FSM RRGtoFAConverter::convert( void )
 
     // step 5
     m_automaton.addFinalState( AState );
-    for( set<Rule>::const_iterator i = m_grammar.getRules().begin(); i != m_grammar.getRules().end(); i++ )
-        if( GrammarUtils::isEpsilonRule( *i ) )
-            m_automaton.addFinalState( State( m_grammar.getStartSymbol().getSymbol() ));
+    for( const auto & rule : m_grammar.getRules( ) )
+        if( m_grammar.isEpsilonRule( rule ) )
+            m_automaton.addFinalState( State( m_grammar.getStartSymbol( ).getSymbol( ) ) );
 
     return m_automaton;
 }
diff --git a/aconversions/src/utils/GrammarUtils.cpp b/aconversions/src/utils/GrammarUtils.cpp
index d0ef866800e8d7b29d2938bd792390868bf0301d..c001b9f58db1f45d6fc9a2431dbbb70b9412413e 100644
--- a/aconversions/src/utils/GrammarUtils.cpp
+++ b/aconversions/src/utils/GrammarUtils.cpp
@@ -32,12 +32,6 @@ const list<Symbol>::const_iterator GrammarUtils::getFirstSymbolFromSet( const li
     return i;
 }
 
-bool GrammarUtils::isEpsilonRule( const Rule & rule )
-{
-    // relies on grammar check. Assumes that aLib allows only S->\eps, where S is startSymbol of Grammar (by definition)
-    return rule.getRightSide().size() == 0;
-}
-
 Symbol GrammarUtils::createUniqueSymbol( const char * name, const RegularGrammar & grammar, SuffixType suffix )
 {
     return createUniqueSymbol( string( name ), grammar, suffix );
diff --git a/aconversions/src/utils/GrammarUtils.h b/aconversions/src/utils/GrammarUtils.h
index afde0bf0508afdd811f716a53bac717c91f22fae..f2f2f636f378fb00273189c3e1a580aefa77f2cf 100644
--- a/aconversions/src/utils/GrammarUtils.h
+++ b/aconversions/src/utils/GrammarUtils.h
@@ -36,8 +36,6 @@ public:
     static bool isNonterminalOnRightSide( const alphabet::Symbol & nonTerminal, const std::set<grammar::Rule> & rules );
     static const std::list<alphabet::Symbol>::const_iterator getFirstSymbolFromSet( const std::list<alphabet::Symbol> & ruleSymbols, const std::set<alphabet::Symbol> & grammarSymbols );
 
-    static bool isEpsilonRule( const grammar::Rule & rule );
-
     static alphabet::Symbol createUniqueSymbol( const char * name, const grammar::RegularGrammar & grammar, SuffixType suffix = UNDEFINED );
     static alphabet::Symbol createUniqueSymbol( const std::string & name, const grammar::RegularGrammar & grammar, SuffixType suffix = UNDEFINED );