diff --git a/alib2algo/src/grammar/parsing/LR0Parser.cpp b/alib2algo/src/grammar/parsing/LR0Parser.cpp
index c5c12b116a3f6e320e26b50cc4cf7e556cff7dbb..0f8ea0632697eae1a77bda847048affe07fd3f08 100644
--- a/alib2algo/src/grammar/parsing/LR0Parser.cpp
+++ b/alib2algo/src/grammar/parsing/LR0Parser.cpp
@@ -48,6 +48,27 @@ LR0Items LR0Parser::getClosure ( LR0Items items, grammar::CFG originalGrammar )
 	return items;
 }
 
+LR0Items LR0Parser::getNextStateItems ( LR0Items items, alphabet::Symbol symbol, grammar::CFG originalGrammar ) {
+	LR0Items transitionItems;
+	for ( const LR0Items::value_type & symbolItems : items ) {
+		alphabet::Symbol leftHandSide = symbolItems.first;
+		for ( const std::pair < unsigned, std::vector < alphabet::Symbol > > & item : symbolItems.second) {
+			unsigned position = item.first;
+			std::vector < alphabet::Symbol > rightHandSide = item.second;
+
+			if ( position == rightHandSide.size ( ) ) {
+				continue;
+			}
+
+			if ( rightHandSide[position] == symbol ) {
+				transitionItems[leftHandSide].insert ( { position + 1, rightHandSide } );
+			}
+		}
+	}
+
+	return getClosure ( transitionItems, originalGrammar );
+}
+
 automaton::DFA LR0Parser::getAutomaton ( grammar::CFG originalGrammar ) {
 	grammar::CFG augmentedGrammar = LRParser::getAugmentedGrammar ( originalGrammar );
 	alphabet::Symbol initialSymbol = augmentedGrammar.getInitialSymbol ( );
@@ -70,7 +91,7 @@ automaton::DFA LR0Parser::getAutomaton ( grammar::CFG originalGrammar ) {
 		itemsToProcess.pop ( );
 
 		for ( const alphabet::Symbol & symbol : lr0Automaton.getInputAlphabet ( ) ) {
-			LR0Items nextStateItems = LRParser::getNextStateItems ( currentLabel.getItems ( ), symbol, augmentedGrammar );
+			LR0Items nextStateItems = getNextStateItems ( currentLabel.getItems ( ), symbol, augmentedGrammar );
 			if ( !nextStateItems.empty ( ) ) {
 				label::LR0ItemsLabel nextStateLabel ( nextStateItems );
 
diff --git a/alib2algo/src/grammar/parsing/LR0Parser.h b/alib2algo/src/grammar/parsing/LR0Parser.h
index cf06cf4b96a4492a653375610e3c64c2b1452e6b..e98fa8a66e27011c4cab3c945c768ea7111b75bf 100644
--- a/alib2algo/src/grammar/parsing/LR0Parser.h
+++ b/alib2algo/src/grammar/parsing/LR0Parser.h
@@ -20,6 +20,8 @@ class LR0Parser {
 public:
 	static LR0Items getClosure ( LR0Items items, grammar::CFG originalGrammar );
 
+	static LR0Items getNextStateItems ( LR0Items items, alphabet::Symbol symbol, grammar::CFG originalGrammar );
+
 	static automaton::DFA getAutomaton ( grammar::CFG originalGrammar );
 };
 
diff --git a/alib2algo/src/grammar/parsing/LRParser.cpp b/alib2algo/src/grammar/parsing/LRParser.cpp
index 2c3d42b07e400b661328ba8ce55b1eaba4373672..f96a5fe785befcd1a8b4fef8158255d9f185fa1d 100644
--- a/alib2algo/src/grammar/parsing/LRParser.cpp
+++ b/alib2algo/src/grammar/parsing/LRParser.cpp
@@ -7,8 +7,6 @@
 
 #include "LRParser.h"
 
-#include "LR0Parser.h"
-
 #include <stack>
 
 namespace grammar {
@@ -36,27 +34,6 @@ grammar::CFG LRParser::getAugmentedGrammar ( grammar::CFG originalGrammar ) {
 	return originalGrammar;
 }
 
-LR0Items LRParser::getNextStateItems ( LR0Items items, alphabet::Symbol symbol, grammar::CFG originalGrammar ) {
-	LR0Items transitionItems;
-	for ( const LR0Items::value_type & symbolItems : items ) {
-		alphabet::Symbol leftHandSide = symbolItems.first;
-		for ( const std::pair < unsigned, std::vector < alphabet::Symbol > > & item : symbolItems.second) {
-			unsigned position = item.first;
-			std::vector < alphabet::Symbol > rightHandSide = item.second;
-
-			if ( position == rightHandSide.size ( ) ) {
-				continue;
-			}
-
-			if ( rightHandSide[position] == symbol ) {
-				transitionItems[leftHandSide].insert ( { position + 1, rightHandSide } );
-			}
-		}
-	}
-
-	return LR0Parser::getClosure ( transitionItems, originalGrammar );
-}
-
 bool LRParser::parse ( LRActionTable actionTable, LRGotoTable gotoTable, automaton::State initialState, std::vector < alphabet::Symbol > input ) {
 	std::stack < automaton::State > states;
 	states.push ( initialState );
diff --git a/alib2algo/src/grammar/parsing/LRParser.h b/alib2algo/src/grammar/parsing/LRParser.h
index 63349d60f2a53e4fc3150919d1b7db9505472daf..43a71070047c24c2d988490e56e57a9c22217ceb 100644
--- a/alib2algo/src/grammar/parsing/LRParser.h
+++ b/alib2algo/src/grammar/parsing/LRParser.h
@@ -24,8 +24,6 @@ public:
 
 	static grammar::CFG getAugmentedGrammar ( grammar::CFG originalGrammar );
 
-	static LR0Items getNextStateItems ( LR0Items items, alphabet::Symbol symbol, grammar::CFG originalGrammar );
-
 	static bool parse ( LRActionTable actionTable, LRGotoTable gotoTable, automaton::State initialState, std::vector < alphabet::Symbol > input );
 };