diff --git a/alib2algo/src/conversions/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp b/alib2algo/src/conversions/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp
index e6c8b8ff74df5b12dd77a73d390e75b9fe2bfcb4..c9b1a00677a959458bd6ebfde85e2c6a677a7c79 100644
--- a/alib2algo/src/conversions/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp
+++ b/alib2algo/src/conversions/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp
@@ -9,31 +9,22 @@
 
 namespace rg2rg {
 
-LeftToRightRegularGrammar::LeftToRightRegularGrammar( const grammar::LeftRG & lrg ) : m_lrg( lrg ) {
-
-}
-
-LeftToRightRegularGrammar::~LeftToRightRegularGrammar( void )
-{
-
-}
-
-grammar::RightRG LeftToRightRegularGrammar::convert( void )
+grammar::RightRG LeftToRightRegularGrammar::convert(const grammar::LeftRG& lrg)
 {
 	// 1.
-	alphabet::Symbol s = alphabet::createUniqueSymbol( m_lrg.getInitialSymbol( ), m_lrg.getNonterminalAlphabet(), m_lrg.getTerminalAlphabet() );
+	alphabet::Symbol s = alphabet::createUniqueSymbol( lrg.getInitialSymbol( ), lrg.getNonterminalAlphabet(), lrg.getTerminalAlphabet() );
 
 	grammar::RightRG rrg( s );
 
-	for(const auto & nonterminalSymbol : m_lrg.getNonterminalAlphabet() ) {
+	for(const auto & nonterminalSymbol : lrg.getNonterminalAlphabet() ) {
 		rrg.addNonterminalSymbol( nonterminalSymbol );
 	}
 
-	rrg.setTerminalAlphabet( m_lrg.getTerminalAlphabet( ) );
-	rrg.setGeneratesEpsilon( m_lrg.getGeneratesEpsilon( ) );
+	rrg.setTerminalAlphabet( lrg.getTerminalAlphabet( ) );
+	rrg.setGeneratesEpsilon( lrg.getGeneratesEpsilon( ) );
 
 	// 2
-	for( const auto & rule : m_lrg.getRules( ) ) {
+	for( const auto & rule : lrg.getRules( ) ) {
 		const alphabet::Symbol& lhs = rule.first;
 
 		for(const auto & ruleRHS : rule.second ) {
@@ -44,7 +35,7 @@ grammar::RightRG LeftToRightRegularGrammar::convert( void )
 				std::pair<alphabet::Symbol, alphabet::Symbol> rightSide = std::make_pair( rhs.second, lhs );
 				rrg.addRule( leftSide, rightSide );
 
-				if( lhs == m_lrg.getInitialSymbol( ) ) {
+				if( lhs == lrg.getInitialSymbol( ) ) {
 					alphabet::Symbol leftSide = rhs.first;
 					alphabet::Symbol rightSide = rhs.second;
 					rrg.addRule( leftSide, rightSide );
@@ -56,7 +47,7 @@ grammar::RightRG LeftToRightRegularGrammar::convert( void )
 				std::pair<alphabet::Symbol, alphabet::Symbol> rightSide = std::make_pair( rhs, lhs );
 				rrg.addRule( leftSide, rightSide );
 
-				if( lhs == m_lrg.getInitialSymbol( ) ) {
+				if( lhs == lrg.getInitialSymbol( ) ) {
 					alphabet::Symbol leftSide = rrg.getInitialSymbol( );
 					alphabet::Symbol rightSide = rhs;
 					rrg.addRule( leftSide, rightSide );
diff --git a/alib2algo/src/conversions/rg2rg/lrg2rrg/LeftToRightRegularGrammar.h b/alib2algo/src/conversions/rg2rg/lrg2rrg/LeftToRightRegularGrammar.h
index e0089201702c70a012e6faab27f0f5d0938737fb..f01665d3b330b32ffc2d551da90d4fc4e3ad8937 100644
--- a/alib2algo/src/conversions/rg2rg/lrg2rrg/LeftToRightRegularGrammar.h
+++ b/alib2algo/src/conversions/rg2rg/lrg2rrg/LeftToRightRegularGrammar.h
@@ -17,24 +17,11 @@ namespace rg2rg
 class LeftToRightRegularGrammar
 {
 public:
-    /**
-     * @param lrg Original left regular grammar.
-     */
-    LeftToRightRegularGrammar( const grammar::LeftRG & lrg );
-
-    ~LeftToRightRegularGrammar( void );
-
-    /**
+   /**
      * Performs conversion.
      * @return right regular grammar which is equivalent to source left regular grammar.
      */
-    grammar::RightRG convert( void );
-
-protected:
-    /**
-     * input grammar
-     */
-    const grammar::LeftRG & m_lrg;
+    grammar::RightRG convert(const grammar::LeftRG& lrg);
 };
 
 } /* namespace rg2rg */
diff --git a/alib2algo/src/conversions/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp b/alib2algo/src/conversions/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp
index 420b9365a8a83070e8a7b7fcca9810f922432ff5..f51ab73248d30e1d3ba9ed3dc815cc27a8bb7f7f 100644
--- a/alib2algo/src/conversions/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp
+++ b/alib2algo/src/conversions/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp
@@ -10,32 +10,22 @@
 namespace rg2rg
 {
 
-RightToLeftRegularGrammar::RightToLeftRegularGrammar( const grammar::RightRG & rrg ) : m_rrg( rrg )
-{
-
-}
-
-RightToLeftRegularGrammar::~RightToLeftRegularGrammar( void )
-{
-
-}
-
-grammar::LeftRG RightToLeftRegularGrammar::convert( void )
+grammar::LeftRG RightToLeftRegularGrammar::convert(const grammar::RightRG& rrg)
 {
 	// 1.
-	alphabet::Symbol s = alphabet::createUniqueSymbol( m_rrg.getInitialSymbol( ), m_rrg.getNonterminalAlphabet(), m_rrg.getTerminalAlphabet() );
+	alphabet::Symbol s = alphabet::createUniqueSymbol( rrg.getInitialSymbol( ), rrg.getNonterminalAlphabet(), rrg.getTerminalAlphabet() );
 
 	grammar::LeftRG lrg(s);
 
-	for(const auto & nonterminalSymbol : m_rrg.getNonterminalAlphabet()) {
+	for(const auto & nonterminalSymbol : rrg.getNonterminalAlphabet()) {
 		lrg.addNonterminalSymbol( nonterminalSymbol );
 	}
 
-	lrg.setTerminalAlphabet( m_rrg.getTerminalAlphabet( ) );
-	lrg.setGeneratesEpsilon( m_rrg.getGeneratesEpsilon( ) );
+	lrg.setTerminalAlphabet( rrg.getTerminalAlphabet( ) );
+	lrg.setGeneratesEpsilon( rrg.getGeneratesEpsilon( ) );
 
 	// 2.
-	for( const auto & rule : m_rrg.getRules( ) ) {
+	for( const auto & rule : rrg.getRules( ) ) {
 		const alphabet::Symbol& lhs = rule.first;
 
 		for(const auto & ruleRHS : rule.second ) {
@@ -46,7 +36,7 @@ grammar::LeftRG RightToLeftRegularGrammar::convert( void )
 				std::pair<alphabet::Symbol, alphabet::Symbol> rightSide = std::make_pair( lhs, rhs.first );
 				lrg.addRule( leftSide, rightSide );
 
-				if( lhs == m_rrg.getInitialSymbol( ) ) {
+				if( lhs == rrg.getInitialSymbol( ) ) {
 					alphabet::Symbol leftSide = rhs.second;
 					alphabet::Symbol rightSide = rhs.first;
 					lrg.addRule( leftSide, rightSide );
@@ -58,7 +48,7 @@ grammar::LeftRG RightToLeftRegularGrammar::convert( void )
 				std::pair<alphabet::Symbol, alphabet::Symbol> rightSide = std::make_pair ( lhs, rhs );
 				lrg.addRule( leftSide, rightSide );
 
-				if( lhs == m_rrg.getInitialSymbol( ) ) {
+				if( lhs == rrg.getInitialSymbol( ) ) {
 					alphabet::Symbol leftSide = lrg.getInitialSymbol( );
 					alphabet::Symbol rightSide = rhs;
 					lrg.addRule( leftSide, rightSide );
diff --git a/alib2algo/src/conversions/rg2rg/rrg2lrg/RightToLeftRegularGrammar.h b/alib2algo/src/conversions/rg2rg/rrg2lrg/RightToLeftRegularGrammar.h
index 73dcdc3968ce2fa2806fa3410c013275d605326a..8b7e3dc7207a4551b36fce2d48683e310d4bc48a 100644
--- a/alib2algo/src/conversions/rg2rg/rrg2lrg/RightToLeftRegularGrammar.h
+++ b/alib2algo/src/conversions/rg2rg/rrg2lrg/RightToLeftRegularGrammar.h
@@ -20,24 +20,11 @@ namespace rg2rg
 class RightToLeftRegularGrammar
 {
 public:
-    /**
-     * @param rrg Original right regular grammar.
-     */
-    RightToLeftRegularGrammar( const grammar::RightRG & rrg );
-
-    ~RightToLeftRegularGrammar( void );
-
     /**
      * Performs conversion.
      * @return left regular grammar which is equivalent to source right regular grammar.
      */
-    grammar::LeftRG convert( void );
-
-private:
-    /**
-     *
-     */
-     const grammar::RightRG & m_rrg;
+    grammar::LeftRG convert(const grammar::RightRG& rrg);
 };
 
 } /* namespace rg2rg */
diff --git a/alib2algo/test-src/conversions/rg2rg/rg2rgTest.cpp b/alib2algo/test-src/conversions/rg2rg/rg2rgTest.cpp
index aa812511ff4ea3be6e805baa0e5db0e96dedf7e8..24b8c9772e4cfe126a526fc59329c41d9951ef4d 100644
--- a/alib2algo/test-src/conversions/rg2rg/rg2rgTest.cpp
+++ b/alib2algo/test-src/conversions/rg2rg/rg2rgTest.cpp
@@ -32,8 +32,8 @@ void rg2rgTest::testConversion() {
   rrGrammar.addRule(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::IntegerLabel(2)))), std::make_pair(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("b")))), alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::IntegerLabel(3))))));
   rrGrammar.addRule(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::IntegerLabel(3)))), alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("a")))));
 
-  rg2rg::RightToLeftRegularGrammar convertor(rrGrammar);
-  grammar::LeftRG lrGrammar = convertor.convert();
+  rg2rg::RightToLeftRegularGrammar convertor;;
+  grammar::LeftRG lrGrammar = convertor.convert(rrGrammar);
 
   grammar::LeftRG lrGrammarRef(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::IntegerLabel(4)))));
 
@@ -64,8 +64,8 @@ void rg2rgTest::testConversion2() {
   lrGrammar.addRule(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::IntegerLabel(3)))), std::make_pair(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::IntegerLabel(2)))), alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("b"))))));
   lrGrammar.addRule(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::IntegerLabel(4)))), std::make_pair(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::IntegerLabel(3)))), alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::StringLabel("a"))))));
 
-  rg2rg::LeftToRightRegularGrammar convertor(lrGrammar);
-  grammar::RightRG rrGrammar = convertor.convert();
+  rg2rg::LeftToRightRegularGrammar convertor;
+  grammar::RightRG rrGrammar = convertor.convert(lrGrammar);
 
   grammar::RightRG rrGrammarRef(alphabet::Symbol(alphabet::LabeledSymbol(label::Label(label::IntegerLabel(5)))));