diff --git a/alib2algo/makefile b/alib2algo/makefile
index 38bca86b66f086f610da9ff2985a30493671b4ef..bf9f76e92604e1768a0c1f7bea9ac9cc0f568d5f 100644
--- a/alib2algo/makefile
+++ b/alib2algo/makefile
@@ -10,6 +10,8 @@ endef
 
 export NEW_LINE
 
+CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
+
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
@@ -54,7 +56,7 @@ FORCE:
 	$${NEW_LINE}\
 	export NEW_LINE$${NEW_LINE}\
 	$${NEW_LINE}\
-	CXXFLAGS:= -pipe -std=c++11 \$$(CXX_OTHER_FLAGS) -c -Wall -pedantic -Wextra -Werror -fPIC \$$(addprefix -I, \$$(realpath $(INCLUDE_PATHS))) -I\$$(realpath \$$(SOURCES_BASE_DIR)/../src/)$${NEW_LINE}\
+	CXXFLAGS:= -pipe -std=c++11 \$$(CXX_OTHER_FLAGS) -c $(CXX_FLAGS) -fPIC \$$(addprefix -I, \$$(realpath $(INCLUDE_PATHS))) -I\$$(realpath \$$(SOURCES_BASE_DIR)/../src/)$${NEW_LINE}\
 	$${NEW_LINE}\
 	SOURCES:= \$$(shell find \$$(SOURCES_BASE_DIR)/\$$(SRCDIR) -maxdepth 1 -type f -name \"*.cpp\")$${NEW_LINE}\
 	DEPENDENCIES:= \$$(patsubst \$$(SOURCES_BASE_DIR)/\$$(SRCDIR)%.cpp, \$$(OBJECTS_BASE_DIR)/\$$(SRCDIR)%.d, \$$(SOURCES))$${NEW_LINE}\
diff --git a/alib2algo/src/arbology/exact/ExactPatternMatchingAutomaton.cpp b/alib2algo/src/arbology/exact/ExactPatternMatchingAutomaton.cpp
index 2a8e3f767f044fdc3e39639a527b276a902465be..7b634dab3e0e6dc1858adcb4852b4bd4cb03a4a0 100644
--- a/alib2algo/src/arbology/exact/ExactPatternMatchingAutomaton.cpp
+++ b/alib2algo/src/arbology/exact/ExactPatternMatchingAutomaton.cpp
@@ -88,19 +88,19 @@ automaton::NPDA < > ExactPatternMatchingAutomaton::construct ( const tree::Prefi
 		res.addState ( label::labelFrom ( i ) );
 
 		if ( symbol == pattern.getSubtreeWildcard ( ) )
-			for ( const std::ranked_symbol < > & symbol : pattern.getAlphabet ( ) ) {
-				if ( symbol == pattern.getSubtreeWildcard ( ) ) continue;
+			for ( const std::ranked_symbol < > & alphabetSymbol : pattern.getAlphabet ( ) ) {
+				if ( alphabetSymbol == pattern.getSubtreeWildcard ( ) ) continue;
 
-				if ( symbol.getRank ( ).getData ( ) == 0 ) {
-					res.addTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { symbol } ), std::vector < alphabet::Symbol > ( 1, alphabet::symbolFrom ( 'T' ) ), label::labelFrom ( i - 1 ), std::vector < alphabet::Symbol > { } );
+				if ( alphabetSymbol.getRank ( ).getData ( ) == 0 ) {
+					res.addTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { alphabetSymbol } ), std::vector < alphabet::Symbol > ( 1, alphabet::symbolFrom ( 'T' ) ), label::labelFrom ( i - 1 ), std::vector < alphabet::Symbol > { } );
 
-					res.addTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { symbol } ), std::vector < alphabet::Symbol > ( 1, alphabet::symbolFrom ( 'R' ) ), label::labelFrom ( i ), std::vector < alphabet::Symbol > { } );
+					res.addTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { alphabetSymbol } ), std::vector < alphabet::Symbol > ( 1, alphabet::symbolFrom ( 'R' ) ), label::labelFrom ( i ), std::vector < alphabet::Symbol > { } );
 				} else {
-					std::vector < alphabet::Symbol > push ( symbol.getRank ( ).getData ( ), alphabet::symbolFrom ( 'T' ) );
-					res.addTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { symbol } ), std::vector < alphabet::Symbol > ( 1, alphabet::symbolFrom ( 'T' ) ), label::labelFrom ( i - 1 ), push );
+					std::vector < alphabet::Symbol > push ( alphabetSymbol.getRank ( ).getData ( ), alphabet::symbolFrom ( 'T' ) );
+					res.addTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { alphabetSymbol } ), std::vector < alphabet::Symbol > ( 1, alphabet::symbolFrom ( 'T' ) ), label::labelFrom ( i - 1 ), push );
 
-					push[symbol.getRank ( ).getData ( ) - 1] = alphabet::symbolFrom ( 'R' );
-					res.addTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { symbol } ), std::vector < alphabet::Symbol > ( 1, alphabet::symbolFrom ( 'R' ) ), label::labelFrom ( i - 1 ), push );
+					push[alphabetSymbol.getRank ( ).getData ( ) - 1] = alphabet::symbolFrom ( 'R' );
+					res.addTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { alphabetSymbol } ), std::vector < alphabet::Symbol > ( 1, alphabet::symbolFrom ( 'R' ) ), label::labelFrom ( i - 1 ), push );
 				}
 			}
 
@@ -154,25 +154,25 @@ automaton::VisiblyPushdownNPDA < > ExactPatternMatchingAutomaton::construct ( co
 		res.addState ( label::labelFrom ( i ) );
 
 		if ( symbol == pattern.getSubtreeWildcard ( ) ) {
-			for ( const std::ranked_symbol < > & symbol : pattern.getAlphabet ( ) ) {
-				if ( ( symbol == pattern.getSubtreeWildcard ( ) ) || ( symbol == pattern.getVariablesBar ( ) ) || ( pattern.getBars ( ).count ( symbol ) ) ) continue;
+			for ( const std::ranked_symbol < > & alphabetSymbol : pattern.getAlphabet ( ) ) {
+				if ( ( alphabetSymbol == pattern.getSubtreeWildcard ( ) ) || ( alphabetSymbol == pattern.getVariablesBar ( ) ) || ( pattern.getBars ( ).count ( alphabetSymbol ) ) ) continue;
 
-				res.addCallTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { symbol } ), label::labelFrom ( i ), alphabet::symbolFrom ( 'R' ) );
+				res.addCallTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { alphabetSymbol } ), label::labelFrom ( i ), alphabet::symbolFrom ( 'R' ) );
 			}
 		} else if ( symbol == pattern.getVariablesBar ( ) ) {
-			for ( const std::ranked_symbol < > & symbol : pattern.getAlphabet ( ) ) {
-				if ( ( symbol == pattern.getSubtreeWildcard ( ) ) || ( symbol == pattern.getVariablesBar ( ) ) ) continue;
+			for ( const std::ranked_symbol < > & alphabetSymbol : pattern.getAlphabet ( ) ) {
+				if ( ( alphabetSymbol == pattern.getSubtreeWildcard ( ) ) || ( alphabetSymbol == pattern.getVariablesBar ( ) ) ) continue;
 
-				if ( pattern.getBars ( ).count ( symbol ) )
-					res.addReturnTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { symbol } ), alphabet::symbolFrom ( 'T' ), label::labelFrom ( i - 1 ) );
+				if ( pattern.getBars ( ).count ( alphabetSymbol ) )
+					res.addReturnTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { alphabetSymbol } ), alphabet::symbolFrom ( 'T' ), label::labelFrom ( i - 1 ) );
 				else
-					res.addCallTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { symbol } ), label::labelFrom ( i - 1 ), alphabet::symbolFrom ( 'T' ) );
+					res.addCallTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { alphabetSymbol } ), label::labelFrom ( i - 1 ), alphabet::symbolFrom ( 'T' ) );
 			}
 
-			for ( const std::ranked_symbol < > & symbol : pattern.getAlphabet ( ) ) {
-				if ( ( symbol == pattern.getSubtreeWildcard ( ) ) || ( symbol == pattern.getVariablesBar ( ) ) || ( ! pattern.getBars ( ).count ( symbol ) ) ) continue;
+			for ( const std::ranked_symbol < > & alphabetSymbol : pattern.getAlphabet ( ) ) {
+				if ( ( alphabetSymbol == pattern.getSubtreeWildcard ( ) ) || ( alphabetSymbol == pattern.getVariablesBar ( ) ) || ( ! pattern.getBars ( ).count ( alphabetSymbol ) ) ) continue;
 
-				res.addReturnTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { symbol } ), alphabet::symbolFrom ( 'R' ), label::labelFrom ( i ) );
+				res.addReturnTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { alphabetSymbol } ), alphabet::symbolFrom ( 'R' ), label::labelFrom ( i ) );
 			}
 		} else if ( pattern.getBars ( ).count ( symbol ) ) {
 			res.addReturnTransition ( label::labelFrom ( i - 1 ), alphabet::Symbol ( alphabet::RankedSymbol < > { symbol } ), alphabet::symbolFrom ( 'T' ), label::labelFrom ( i ) );
diff --git a/alib2algo/src/automaton/run/Run.cpp b/alib2algo/src/automaton/run/Run.cpp
index a42c83cc46530a8f06a65b5c3ac65c39ce9d42b0..cc897cb58fda3313beb36f48fe7da768c338ce3f 100644
--- a/alib2algo/src/automaton/run/Run.cpp
+++ b/alib2algo/src/automaton/run/Run.cpp
@@ -173,14 +173,18 @@ std::pair < bool, std::set < label::Label > > Run::calculateStates ( const autom
 	std::set < label::Label > states;
 
 	for ( const auto & transition : automaton.getTransitions ( ) ) {
-		if ( transition.first.first != node.getData ( ) ) continue;
+		if ( transition.first.first != node.getData ( ) )
+			continue;
 
 		unsigned rank = transition.first.first.getRank ( ).getData ( );
+		unsigned j;
 
-		for ( unsigned i = 0; i < rank; i++ )
-			if ( !resStates[i].count ( transition.first.second[i] ) ) break;
+		for ( j = 0; j < rank; j++ )
+			if ( !resStates[j].count ( transition.first.second[j] ) )
+				break;
 
-		if ( i == rank ) states.insert ( transition.second.begin ( ), transition.second.end ( ) );
+		if ( j == rank )
+			states.insert ( transition.second.begin ( ), transition.second.end ( ) );
 	}
 
 	for ( const label::Label & state : states )
@@ -249,7 +253,7 @@ std::tuple < bool, label::Label, std::set < unsigned >, std::deque < alphabet::S
 
 		for ( unsigned j = 0; j < operation.first.size ( ); j++ ) pushdownStore.pop_back ( );
 
-		for ( const auto & symbol : std::make_reverse ( operation.second ) ) pushdownStore.push_back ( symbol );
+		for ( const auto & push : std::make_reverse ( operation.second ) ) pushdownStore.push_back ( push );
 
 		state = transition->second;
 		i++;
@@ -474,9 +478,9 @@ std::tuple < bool, label::Label, std::set < unsigned >, std::deque < alphabet::S
 // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 struct graphStructuredStack {
-	graphStructuredStack ( std::shared_ptr < graphStructuredStack > parent, alphabet::Symbol data ) : parent(parent), data(data) {}
-	std::shared_ptr < graphStructuredStack > parent;
-	alphabet::Symbol data;
+	graphStructuredStack ( std::shared_ptr < graphStructuredStack > parent, alphabet::Symbol data ) : m_parent(parent), m_data(data) {}
+	std::shared_ptr < graphStructuredStack > m_parent;
+	alphabet::Symbol m_data;
 };
 
 std::tuple < bool, std::set < label::Label >, std::set < std::vector < alphabet::Symbol > > > Run::calculateStates ( const automaton::NPDTA < > & automaton, const string::LinearString < > & string ) {
@@ -508,12 +512,12 @@ std::tuple < bool, std::set < label::Label >, std::set < std::vector < alphabet:
 
 		if ( symbolIter == string . getContent () . end () ) {
 			states . insert ( state );
-			if ( automaton . getFinalStates () . count ( state ) && stackNode -> parent == NULL ) {
+			if ( automaton . getFinalStates () . count ( state ) && stackNode -> m_parent == NULL ) {
 				res = true;
 				std::vector < alphabet::Symbol > output;
-				while ( outputNode->parent != NULL ) {
-					output . push_back ( outputNode->data );
-					outputNode = outputNode -> parent;
+				while ( outputNode->m_parent != NULL ) {
+					output . push_back ( outputNode->m_data );
+					outputNode = outputNode -> m_parent;
 				}
 				std::reverse ( output.begin(), output.end() );
 				allOutputs . insert ( output );
@@ -531,10 +535,10 @@ std::tuple < bool, std::set < label::Label >, std::set < std::vector < alphabet:
 
 			unsigned j = 0;
 			for ( ; j < pop . size (); j ++ ) {
-				if ( stackNodeCopy->parent == NULL || stackNodeCopy->data != pop . at (j) ) {
+				if ( stackNodeCopy->m_parent == NULL || stackNodeCopy->m_data != pop . at (j) ) {
 					break;
 				}
-				stackNodeCopy = stackNodeCopy -> parent;
+				stackNodeCopy = stackNodeCopy -> m_parent;
 			}
 			if ( j == pop . size () ) {
 				for ( const auto & elem : std::make_reverse ( std::get<1>(transition . second ) ) ) {
diff --git a/alib2algo/src/automaton/transform/RHPDAToPDA.cpp b/alib2algo/src/automaton/transform/RHPDAToPDA.cpp
index b4f5629a78e9f280bc906374def36bdbbb04ed12..7906b2088c65c06160e8654353e66e0f6555599b 100644
--- a/alib2algo/src/automaton/transform/RHPDAToPDA.cpp
+++ b/alib2algo/src/automaton/transform/RHPDAToPDA.cpp
@@ -140,12 +140,12 @@ automaton::DPDA < > RHPDAToPDA::convert ( const automaton::RealTimeHeightDetermi
 	res.setPushdownStoreAlphabet ( pda.getPushdownStoreAlphabet ( ) );
 	res.removePushdownStoreSymbol ( pda.getBottomOfTheStackSymbol ( ) );
 
-	for ( const auto & st : readingTransitions )
-		for ( const auto & to : st.second ) {
-			std::vector < alphabet::Symbol > pops ( std::get < 2 > ( st.first ).begin ( ), std::get < 2 > ( st.first ).end ( ) );
-			std::vector < alphabet::Symbol > pushes ( to.second.rbegin ( ), to.second.rend ( ) );
+	for ( const auto & transition : readingTransitions )
+		for ( const auto & to : transition.second ) {
+			pops = std::vector < alphabet::Symbol > ( std::get < 2 > ( transition.first ).begin ( ), std::get < 2 > ( transition.first ).end ( ) );
+			pushes = std::vector < alphabet::Symbol > ( to.second.rbegin ( ), to.second.rend ( ) );
 
-			constructTransitions ( st.first, epsilonTransitions, to.first, std::move ( pops ), std::move ( pushes ), res );
+			constructTransitions ( transition.first, epsilonTransitions, to.first, std::move ( pops ), std::move ( pushes ), res );
 		}
 
 	res.setFinalStates ( pda.getFinalStates ( ) );
@@ -256,12 +256,12 @@ automaton::NPDA < > RHPDAToPDA::convert ( const automaton::RealTimeHeightDetermi
 	res.setPushdownStoreAlphabet ( pda.getPushdownStoreAlphabet ( ) );
 	res.removePushdownStoreSymbol ( pda.getBottomOfTheStackSymbol ( ) );
 
-	for ( const auto & st : readingTransitions )
-		for ( const auto & to : st.second ) {
-			std::vector < alphabet::Symbol > pops ( std::get < 2 > ( st.first ).begin ( ), std::get < 2 > ( st.first ).end ( ) );
-			std::vector < alphabet::Symbol > pushes ( to.second.rbegin ( ), to.second.rend ( ) );
+	for ( const auto & transition : readingTransitions )
+		for ( const auto & to : transition.second ) {
+			pops = std::vector < alphabet::Symbol > ( std::get < 2 > ( transition.first ).begin ( ), std::get < 2 > ( transition.first ).end ( ) );
+			pushes = std::vector < alphabet::Symbol > ( to.second.rbegin ( ), to.second.rend ( ) );
 
-			constructTransitions ( st.first, epsilonTransitions, to.first, std::move ( pops ), std::move ( pushes ), res );
+			constructTransitions ( transition.first, epsilonTransitions, to.first, std::move ( pops ), std::move ( pushes ), res );
 		}
 
 	res.setFinalStates ( pda.getFinalStates ( ) );
diff --git a/alib2algo/src/equations/LeftRegularEquationSolver.cpp b/alib2algo/src/equations/LeftRegularEquationSolver.cpp
index 52b1dfe3c2af2224dc0b93025f0ea01504a66ff3..6e1eff91475a1d8a790787a46523bfdf70cc21eb 100644
--- a/alib2algo/src/equations/LeftRegularEquationSolver.cpp
+++ b/alib2algo/src/equations/LeftRegularEquationSolver.cpp
@@ -30,18 +30,21 @@ regexp::UnboundedRegExp < > LeftRegularEquationSolver::eliminate(void) {
 			regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
 			concat.appendElement(std::move(equationTransition.find(std::make_pair(a, b))->second));
 			concat.appendElement(loop);
-			regexp::UnboundedRegExpAlternation < alphabet::Symbol >  alt;
+			regexp::UnboundedRegExpAlternation < alphabet::Symbol > alt;
 			alt.appendElement(std::move(concat));
 			equationTransition.find(std::make_pair(a, b))->second = std::move(alt);
 			regexp::simplify::RegExpOptimize::optimize(equationTransition.find(std::make_pair(a, b))->second);
 		}
-		regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
-		concat.appendElement(std::move(equationFinal.find(a)->second));
-		concat.appendElement(std::move(loop));
-		regexp::UnboundedRegExpAlternation < alphabet::Symbol >  alt;
-		alt.appendElement(std::move(concat));
-		equationFinal.find(a)->second = std::move(alt);
-		regexp::simplify::RegExpOptimize::optimize(equationFinal.find(a)->second);
+
+		{
+			regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
+			concat.appendElement(std::move(equationFinal.find(a)->second));
+			concat.appendElement(std::move(loop));
+			regexp::UnboundedRegExpAlternation < alphabet::Symbol > alt;
+			alt.appendElement(std::move(concat));
+			equationFinal.find(a)->second = std::move(alt);
+			regexp::simplify::RegExpOptimize::optimize(equationFinal.find(a)->second);
+		}
 
 		/*
 		 * eliminate A from rest of the equations using this pattern:
@@ -56,21 +59,23 @@ regexp::UnboundedRegExp < > LeftRegularEquationSolver::eliminate(void) {
 				regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
 				concat.appendElement(equationTransition.find(std::make_pair(a, c))->second);
 				concat.appendElement(equationTransition.find(std::make_pair(b, a))->second);
-				regexp::UnboundedRegExpAlternation < alphabet::Symbol >  alt;
+				regexp::UnboundedRegExpAlternation < alphabet::Symbol > alt;
 				alt.appendElement(std::move(equationTransition.find(std::make_pair(b, c))->second));
 				alt.appendElement(std::move(concat));
 				equationTransition.find(std::make_pair(b, c))->second = std::move(alt);
 				regexp::simplify::RegExpOptimize::optimize(equationTransition.find(std::make_pair(b, c))->second);
 			}
 
-			regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
-			concat.appendElement(equationFinal.find(a)->second);
-			concat.appendElement(std::move(equationTransition.find(std::make_pair(b, a))->second));
-			regexp::UnboundedRegExpAlternation < alphabet::Symbol >  alt;
-			alt.appendElement(std::move(equationFinal.find(b)->second));
-			alt.appendElement(std::move(concat));
-			equationFinal.find(b)->second = std::move(alt);
-			regexp::simplify::RegExpOptimize::optimize(equationFinal.find(b)->second);
+			{
+				regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
+				concat.appendElement(equationFinal.find(a)->second);
+				concat.appendElement(std::move(equationTransition.find(std::make_pair(b, a))->second));
+				regexp::UnboundedRegExpAlternation < alphabet::Symbol > alt;
+				alt.appendElement(std::move(equationFinal.find(b)->second));
+				alt.appendElement(std::move(concat));
+				equationFinal.find(b)->second = std::move(alt);
+				regexp::simplify::RegExpOptimize::optimize(equationFinal.find(b)->second);
+			}
 		}
 	}
 
diff --git a/alib2algo/src/equations/RightRegularEquationSolver.cpp b/alib2algo/src/equations/RightRegularEquationSolver.cpp
index 891caedf8b5b84b5dc7a2329d97dd9dbecd8b5f6..aa32ad7b38da17b09675756dd8f377c8c8977059 100644
--- a/alib2algo/src/equations/RightRegularEquationSolver.cpp
+++ b/alib2algo/src/equations/RightRegularEquationSolver.cpp
@@ -30,18 +30,21 @@ regexp::UnboundedRegExp < > RightRegularEquationSolver::eliminate(void) {
 			regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
 			concat.appendElement(loop);
 			concat.appendElement(std::move(equationTransition.find(std::make_pair(a,b))->second));
-			regexp::UnboundedRegExpAlternation < alphabet::Symbol >  alt;
+			regexp::UnboundedRegExpAlternation < alphabet::Symbol > alt;
 			alt.appendElement(std::move(concat));
 			equationTransition.find(std::make_pair(a, b))->second = std::move(alt);
 			regexp::simplify::RegExpOptimize::optimize(equationTransition.find(std::make_pair(a, b))->second);
 		}
-		regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
-		concat.appendElement(std::move(loop));
-		concat.appendElement(std::move(equationFinal.find(a)->second));
-		regexp::UnboundedRegExpAlternation < alphabet::Symbol >  alt;
-		alt.appendElement(std::move(concat));
-		equationFinal.find(a)->second = std::move(alt);
-		regexp::simplify::RegExpOptimize::optimize(equationFinal.find(a)->second);
+
+		{
+			regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
+			concat.appendElement(std::move(loop));
+			concat.appendElement(std::move(equationFinal.find(a)->second));
+			regexp::UnboundedRegExpAlternation < alphabet::Symbol > alt;
+			alt.appendElement(std::move(concat));
+			equationFinal.find(a)->second = std::move(alt);
+			regexp::simplify::RegExpOptimize::optimize(equationFinal.find(a)->second);
+		}
 
 		/*
 		 * eliminate A from rest of the equations using this pattern:
@@ -56,21 +59,23 @@ regexp::UnboundedRegExp < > RightRegularEquationSolver::eliminate(void) {
 				regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
 				concat.appendElement(equationTransition.find(std::make_pair(b, a))->second);
 				concat.appendElement(equationTransition.find(std::make_pair(a, c))->second);
-				regexp::UnboundedRegExpAlternation < alphabet::Symbol >  alt;
+				regexp::UnboundedRegExpAlternation < alphabet::Symbol > alt;
 				alt.appendElement(std::move(equationTransition.find(std::make_pair(b, c))->second));
 				alt.appendElement(std::move(concat));
 				equationTransition.find(std::make_pair(b, c))->second = std::move(alt);
 				regexp::simplify::RegExpOptimize::optimize(equationTransition.find(std::make_pair(b, c))->second);
 			}
 
-			regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
-			concat.appendElement(std::move(equationTransition.find(std::make_pair(b, a))->second));
-			concat.appendElement(equationFinal.find(a)->second);
-			regexp::UnboundedRegExpAlternation < alphabet::Symbol >  alt;
-			alt.appendElement(std::move(equationFinal.find(b)->second));
-			alt.appendElement(std::move(concat));
-			equationFinal.find(b)->second = std::move(alt);
-			regexp::simplify::RegExpOptimize::optimize(equationFinal.find(b)->second);
+			{
+				regexp::UnboundedRegExpConcatenation < alphabet::Symbol > concat;
+				concat.appendElement(std::move(equationTransition.find(std::make_pair(b, a))->second));
+				concat.appendElement(equationFinal.find(a)->second);
+				regexp::UnboundedRegExpAlternation < alphabet::Symbol > alt;
+				alt.appendElement(std::move(equationFinal.find(b)->second));
+				alt.appendElement(std::move(concat));
+				equationFinal.find(b)->second = std::move(alt);
+				regexp::simplify::RegExpOptimize::optimize(equationFinal.find(b)->second);
+			}
 		}
 	}
 
diff --git a/alib2algo/src/grammar/convert/ToGrammarLeftRG.cpp b/alib2algo/src/grammar/convert/ToGrammarLeftRG.cpp
index 847b0b5553a7bb9d81282c9e5b20136aa9bb3d13..ced00f9e09e6f8308f2d6c6574d9e989d4bbb8c6 100644
--- a/alib2algo/src/grammar/convert/ToGrammarLeftRG.cpp
+++ b/alib2algo/src/grammar/convert/ToGrammarLeftRG.cpp
@@ -41,9 +41,9 @@ grammar::LeftRG < > ToGrammarLeftRG::convert(const grammar::RightRG < > & gramma
 				lrg.addRule( leftSide, rightSide );
 
 				if( lhs == grammar.getInitialSymbol( ) ) {
-					alphabet::Symbol leftSide = rhs.second;
-					alphabet::Symbol rightSide = rhs.first;
-					lrg.addRule( leftSide, rightSide );
+					leftSide = rhs.second;
+					alphabet::Symbol rightSide2 = rhs.first;
+					lrg.addRule( leftSide, rightSide2 );
 				}
 			} else {
 				const alphabet::Symbol& rhs = ruleRHS.get<alphabet::Symbol>();
@@ -53,9 +53,9 @@ grammar::LeftRG < > ToGrammarLeftRG::convert(const grammar::RightRG < > & gramma
 				lrg.addRule( leftSide, rightSide );
 
 				if( lhs == grammar.getInitialSymbol( ) ) {
-					alphabet::Symbol leftSide = lrg.getInitialSymbol( );
-					alphabet::Symbol rightSide = rhs;
-					lrg.addRule( leftSide, rightSide );
+					leftSide = lrg.getInitialSymbol( );
+					alphabet::Symbol rightSide2 = rhs;
+					lrg.addRule( leftSide, rightSide2 );
 				}
 			}
 		}
diff --git a/alib2algo/src/grammar/convert/ToGrammarRightRG.cpp b/alib2algo/src/grammar/convert/ToGrammarRightRG.cpp
index beccc40f23a344f694c23f74c6b0a7c7638dde68..74a132e8d04fc2b786325bb17d234a150ba9163e 100644
--- a/alib2algo/src/grammar/convert/ToGrammarRightRG.cpp
+++ b/alib2algo/src/grammar/convert/ToGrammarRightRG.cpp
@@ -41,9 +41,9 @@ grammar::RightRG < > ToGrammarRightRG::convert(const grammar::LeftRG < > & gramm
 				rrg.addRule( leftSide, rightSide );
 
 				if( lhs == grammar.getInitialSymbol( ) ) {
-					alphabet::Symbol leftSide = rhs.first;
-					alphabet::Symbol rightSide = rhs.second;
-					rrg.addRule( leftSide, rightSide );
+					leftSide = rhs.first;
+					alphabet::Symbol rightSide2 = rhs.second;
+					rrg.addRule( leftSide, rightSide2 );
 				}
 			} else {
 				const alphabet::Symbol& rhs = ruleRHS.get<alphabet::Symbol>();
@@ -53,9 +53,9 @@ grammar::RightRG < > ToGrammarRightRG::convert(const grammar::LeftRG < > & gramm
 				rrg.addRule( leftSide, rightSide );
 
 				if( lhs == grammar.getInitialSymbol( ) ) {
-					alphabet::Symbol leftSide = rrg.getInitialSymbol( );
-					alphabet::Symbol rightSide = rhs;
-					rrg.addRule( leftSide, rightSide );
+					leftSide = rrg.getInitialSymbol( );
+					alphabet::Symbol rightSide2 = rhs;
+					rrg.addRule( leftSide, rightSide2 );
 				}
 			}
 		}
diff --git a/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkov.cpp b/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkov.cpp
index dfc06d9bd151cfd342090486993e3ab463426b14..a82cd278251895056a99fce24457eb5c326e11a8 100644
--- a/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkov.cpp
+++ b/alib2algo/src/rte/convert/ToPostfixPushdownAutomatonGlushkov.cpp
@@ -105,8 +105,8 @@ automaton::NPDA < > ToPostfixPushdownAutomatonGlushkov::convert ( const rte::For
 			if ( kv.second.empty ( ) )
 				std::cerr << "\t" << "{}" << std::endl;
 
-			for ( const auto & f : kv.second ) {
-				for ( const auto & symbol : f )
+			for ( const auto & follow : kv.second ) {
+				for ( const auto & symbol : follow )
 					std::cerr << "\t" << symbol << std::endl;
 
 				std::cerr << std::endl;
@@ -121,8 +121,8 @@ automaton::NPDA < > ToPostfixPushdownAutomatonGlushkov::convert ( const rte::For
 		if ( symb.getRank ( ) == primitive::Unsigned ( 0 ) )
 			automaton.addTransition ( q, rte::GlushkovIndexate::getSymbolFromGlushkovPair ( symb ).getSymbol ( ), { }, q, { alphabet::Symbol ( alphabet::RankedSymbol < > ( symb ) ) } );
 		else
-			for ( const std::vector < std::ranked_symbol < > > & f : followSet[symb] ) {
-				std::vector < alphabet::Symbol > fstring = phi ( f );
+			for ( const std::vector < std::ranked_symbol < > > & follow : followSet[symb] ) {
+				std::vector < alphabet::Symbol > fstring = phi ( follow );
 				std::reverse ( fstring.begin ( ), fstring.end ( ) );
 				automaton.addTransition ( q, rte::GlushkovIndexate::getSymbolFromGlushkovPair ( symb ).getSymbol ( ), fstring, q, { alphabet::Symbol ( alphabet::RankedSymbol < > ( symb ) ) } );
 			}