diff --git a/alib2algo/src/automaton/transform/Compaction.h b/alib2algo/src/automaton/transform/Compaction.h
index 41e659185e0189f0975e45197a8550e77a92bed0..ed1efdcf5ae3941937a4180d42eee9fee632c85a 100644
--- a/alib2algo/src/automaton/transform/Compaction.h
+++ b/alib2algo/src/automaton/transform/Compaction.h
@@ -69,7 +69,7 @@ automaton::CompactNFA < SymbolType, StateType > Compaction::convert(const automa
 
 		std::vector < SymbolType > path { symbol };
 
-		std::range < typename std::map < std::pair < StateType, SymbolType >, StateType >::const_iterator > transitions;
+		ext::range < typename std::map < std::pair < StateType, SymbolType >, StateType >::const_iterator > transitions;
 		// only 1 child and nonfinal
 		while((transitions = automaton.getTransitionsFromState(q)).size() == 1 && automaton.getFinalStates().count(q) == 0) {
 			const std::pair<std::pair<StateType, SymbolType>, StateType>& transition = * transitions.begin();
diff --git a/alib2algo_experimental/src/grammar/parsing/SLR1ParseTable.cpp b/alib2algo_experimental/src/grammar/parsing/SLR1ParseTable.cpp
index b4ad8ae343add1071bd0251343e96f80b228d0ab..2d3aeba40efa918b310c46c501a19d08f712e794 100644
--- a/alib2algo_experimental/src/grammar/parsing/SLR1ParseTable.cpp
+++ b/alib2algo_experimental/src/grammar/parsing/SLR1ParseTable.cpp
@@ -31,7 +31,7 @@ LRActionTable SLR1ParseTable::getActionTable ( grammar::CFG < > originalGrammar
 	automaton::DFA<> parsingAutomaton = LR0Parser::getAutomaton ( originalGrammar );
 	for ( const DefaultStateType & state : parsingAutomaton.getStates ( ) ) {
 		LR0Items items = static_cast < const label::LR0ItemsLabel & > ( state . getData ( ) ) . getItems ( );
-		std::range < std::map < std::pair < DefaultStateType, DefaultSymbolType >, DefaultStateType >::const_iterator > transitionsFromCurrentStateRange = parsingAutomaton.getTransitionsFromState ( state );
+		ext::range < std::map < std::pair < DefaultStateType, DefaultSymbolType >, DefaultStateType >::const_iterator > transitionsFromCurrentStateRange = parsingAutomaton.getTransitionsFromState ( state );
 		std::map < std::pair < DefaultStateType, DefaultSymbolType >, DefaultStateType > transitionsFromCurrentState ( transitionsFromCurrentStateRange.begin ( ), transitionsFromCurrentStateRange.end ( ) );
 		for ( const LR0Items::value_type & nonterminalItems : items ) {
 			DefaultSymbolType leftHandSide = nonterminalItems.first;
@@ -73,7 +73,7 @@ LRGotoTable SLR1ParseTable::getGotoTable ( grammar::CFG < > originalGrammar ) {
 	grammar::CFG < > augmentedGrammar = LRParser::getAugmentedGrammar ( originalGrammar );
 	automaton::DFA<> parsingAutomaton = LR0Parser::getAutomaton ( originalGrammar );
 	for ( const DefaultStateType & state : parsingAutomaton.getStates ( ) ) {
-		std::range < std::map < std::pair < DefaultStateType, DefaultSymbolType >, DefaultStateType >::const_iterator > transitionsFromCurrentStateRange = parsingAutomaton.getTransitionsFromState ( state );
+		ext::range < std::map < std::pair < DefaultStateType, DefaultSymbolType >, DefaultStateType >::const_iterator > transitionsFromCurrentStateRange = parsingAutomaton.getTransitionsFromState ( state );
 		std::map < std::pair < DefaultStateType, DefaultSymbolType >, DefaultStateType > transitionsFromCurrentState ( transitionsFromCurrentStateRange.begin ( ), transitionsFromCurrentStateRange.end ( ) );
 		for ( const DefaultSymbolType & nonterminal : augmentedGrammar.getNonterminalAlphabet ( ) ) {
 			std::map < std::pair<DefaultStateType, DefaultSymbolType >, DefaultStateType >::iterator transitionIterator = transitionsFromCurrentState.find ( { state, nonterminal } );
diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h
index 17ebf8fda6c0389934af4c0a66a34981cf789bdb..108e83daa99ddf7eb510ab1d6393bc3e560077bb 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -133,7 +133,7 @@ public:
 	/**
 	 * @return automaton transitions from state
 	 */
-	std::range < typename std::map < std::pair < StateType, SymbolType >, StateType >::const_iterator > getTransitionsFromState ( const StateType & from ) const;
+	ext::range < typename std::map < std::pair < StateType, SymbolType >, StateType >::const_iterator > getTransitionsFromState ( const StateType & from ) const;
 
 	/**
 	 * @return automaton transitions to state
@@ -281,7 +281,7 @@ const std::map < std::pair < StateType, SymbolType >, StateType > & DFA<SymbolTy
 	};
 
 template<class SymbolType, class StateType >
-std::range < typename std::map < std::pair < StateType, SymbolType >, StateType >::const_iterator > DFA<SymbolType, StateType>::getTransitionsFromState ( const StateType & from ) const {
+ext::range < typename std::map < std::pair < StateType, SymbolType >, StateType >::const_iterator > DFA<SymbolType, StateType>::getTransitionsFromState ( const StateType & from ) const {
 	if ( !getStates ( ).count ( from ) )
 		throw AutomatonException ( "State \"" + ext::to_string ( from ) + "\" doesn't exist" );
 	typename std::map < std::pair < StateType, SymbolType >, StateType >::const_iterator lower = transitions.begin ( );
@@ -294,7 +294,7 @@ std::range < typename std::map < std::pair < StateType, SymbolType >, StateType
 		++ upper;
 	}
 
-	return std::make_range ( lower, upper );
+	return ext::make_range ( lower, upper );
 }
 
 template<class SymbolType, class StateType >
diff --git a/alib2std/src/extensions/range.hpp b/alib2std/src/extensions/range.hpp
index 38dadda493b09282946c4713d02b645d2295482c..0ab3881d55fb0d56615752b82bbf3563c05d365b 100644
--- a/alib2std/src/extensions/range.hpp
+++ b/alib2std/src/extensions/range.hpp
@@ -11,7 +11,7 @@
 #include <utility>
 #include <iterator>
 
-namespace std {
+namespace ext {
 
 template<typename Iterator>
 class range {
@@ -110,7 +110,7 @@ auto make_range ( const Container & container ) {
 	return make_range ( container.begin ( ), container.end ( ) );
 }
 
-} /* namespace std */
+} /* namespace ext */
 
 #endif /* __RANGE_HPP_ */
 
diff --git a/alib2std/test-src/extensions/RangeTest.cpp b/alib2std/test-src/extensions/RangeTest.cpp
index a70359d534f581e4faf32c5648afce9586eba7bc..f0f424a1b7a5df24095f4a50ece02eefe84b9e3e 100644
--- a/alib2std/test-src/extensions/RangeTest.cpp
+++ b/alib2std/test-src/extensions/RangeTest.cpp
@@ -15,15 +15,15 @@ void RangeTest::tearDown ( ) {
 void RangeTest::constructorTest ( ) {
 	int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
-	std::range < int * > ra1 ( arr, arr + sizeof ( arr ) / sizeof ( * arr ) );
+	ext::range < int * > ra1 ( arr, arr + sizeof ( arr ) / sizeof ( * arr ) );
 
 	std::vector < int > v1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
-	std::range < std::vector < int >::iterator > rv1 ( v1.begin ( ), v1.end ( ) );
+	ext::range < std::vector < int >::iterator > rv1 ( v1.begin ( ), v1.end ( ) );
 
 	CPPUNIT_ASSERT ( ( std::equal ( ra1.begin ( ), ra1.end ( ), rv1.begin ( ), rv1.end ( ) ) ) );
 
-	auto rv2 = std::make_range ( v1 );
+	auto rv2 = ext::make_range ( v1 );
 
 	CPPUNIT_ASSERT ( ( std::equal ( rv1.begin ( ), rv1.end ( ), rv2.begin ( ), rv2.end ( ) ) ) );
 }
@@ -31,19 +31,19 @@ void RangeTest::constructorTest ( ) {
 void RangeTest::sizeTest ( ) {
 	int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
-	std::range < int * > ra1 ( arr, arr + sizeof ( arr ) / sizeof ( * arr ) );
+	ext::range < int * > ra1 ( arr, arr + sizeof ( arr ) / sizeof ( * arr ) );
 
 	CPPUNIT_ASSERT ( ra1.size ( ) == 10 );
 
 	std::vector < int > v1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
-	std::range < std::vector < int >::iterator > rv1 ( v1.begin ( ), v1.end ( ) );
+	ext::range < std::vector < int >::iterator > rv1 ( v1.begin ( ), v1.end ( ) );
 
 	CPPUNIT_ASSERT ( rv1.size ( ) == 10 );
 
 	std::list < int > l1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
-	std::range < std::list < int >::iterator > rl1 ( l1.begin ( ), l1.end ( ) );
+	ext::range < std::list < int >::iterator > rl1 ( l1.begin ( ), l1.end ( ) );
 
 	CPPUNIT_ASSERT ( rl1.size ( ) == 10 );
 }
@@ -51,15 +51,15 @@ void RangeTest::sizeTest ( ) {
 void RangeTest::splitTest ( ) {
 	std::vector < int > v1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
-	auto r1 = std::make_range ( v1 );
+	auto r1 = ext::make_range ( v1 );
 
 	std::vector < int > v2 = { 0, 1, 2 };
 
-	auto r2 = std::make_range ( v2 );
+	auto r2 = ext::make_range ( v2 );
 
 	std::vector < int > v3 = { 3, 4, 5, 6, 7, 8, 9 };
 
-	auto r3 = std::make_range ( v3 );
+	auto r3 = ext::make_range ( v3 );
 
 	auto splitted = r1.split ( 3 );
 
@@ -70,11 +70,11 @@ void RangeTest::splitTest ( ) {
 void RangeTest::sliceTest ( ) {
 	std::vector < int > v1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 
-	auto r1 = std::make_range ( v1 );
+	auto r1 = ext::make_range ( v1 );
 
 	std::vector < int > v2 = { 4, 5, 6 };
 
-	auto r2 = std::make_range ( v2 );
+	auto r2 = ext::make_range ( v2 );
 
 	auto sliced = r1.slice ( 4, -3 );
 
diff --git a/alib2str/src/automaton/AutomatonToStringComposer.h b/alib2str/src/automaton/AutomatonToStringComposer.h
index a04c076ab2703d17ee017f6ce0ef5c535641c9c2..90764b836476f48eb2446c580abe1ad8bf4ff719 100644
--- a/alib2str/src/automaton/AutomatonToStringComposer.h
+++ b/alib2str/src/automaton/AutomatonToStringComposer.h
@@ -51,7 +51,7 @@ public:
 
 template < class SymbolType, class StateType >
 void AutomatonToStringComposer::composeTransitionsFromState(std::ostream& out, const DFA < SymbolType, StateType > & automaton, const StateType & from) {
-	std::range < typename std::map < std::pair < StateType, SymbolType >, StateType >::const_iterator > symbolTransitionsFromState = automaton.getTransitionsFromState(from);
+	ext::range < typename std::map < std::pair < StateType, SymbolType >, StateType >::const_iterator > symbolTransitionsFromState = automaton.getTransitionsFromState(from);
 
 	for(const SymbolType& inputSymbol : automaton.getInputAlphabet()) {
 		if ( ! symbolTransitionsFromState.empty ( ) && symbolTransitionsFromState.front ( ).first.second == inputSymbol ) {