diff --git a/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp b/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp
index 2e1044150ba63e9d576141f3e8ca5f27b51007ff..0ad08e2b20d8def7e2ce9be64ead3d2a23e1d749 100644
--- a/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp
+++ b/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp
@@ -12,7 +12,13 @@ namespace grammar {
 
 namespace generate {
 
-auto GenerateCFG1 = registration::AbstractRegister < RandomGrammarFactory, grammar::CFG < >, ext::set < DefaultSymbolType >, ext::set < DefaultSymbolType >, double > ( RandomGrammarFactory::generateCFG, abstraction::AlgorithmCategories::AlgorithmCategory::DEFAULT, "nonterminals", "terminals", "density" );
+auto GenerateCFG1 = registration::AbstractRegister < RandomGrammarFactory, grammar::CFG < >, ext::set < DefaultSymbolType >, ext::set < DefaultSymbolType >, double > ( RandomGrammarFactory::generateCFG, abstraction::AlgorithmCategories::AlgorithmCategory::DEFAULT, "nonterminals", "terminals", "density" ).setDocumentation (
+"Generates a random context free grammar.\n\
+\n\
+@param nonterminals the nonterminals in the generated grammar\n\
+@param terminals the terminals in the generated grammar\n\
+@param density density of the rule set of the generated grammar\n\
+@return random context free grammar" );
 
 grammar::CFG < std::string, std::string > RandomGrammarFactory::generateCFG ( size_t nonterminalsCount, size_t terminalsCount, bool randomizedAlphabet, double density ) {
 	if(terminalsCount > 26)
@@ -42,7 +48,15 @@ grammar::CFG < std::string, std::string > RandomGrammarFactory::generateCFG ( si
 	return RandomGrammarFactory::randomCFG ( nonterminals, terminals, density );
 }
 
-auto GenerateCFG2 = registration::AbstractRegister < RandomGrammarFactory, grammar::CFG < std::string, std::string >, size_t, size_t, bool, double> ( RandomGrammarFactory::generateCFG, abstraction::AlgorithmCategories::AlgorithmCategory::DEFAULT, "nonterminalsCount", "terminalsCount", "randomizedAlphabet", "density" );
+auto GenerateCFG2 = registration::AbstractRegister < RandomGrammarFactory, grammar::CFG < std::string, std::string >, size_t, size_t, bool, double> ( RandomGrammarFactory::generateCFG, abstraction::AlgorithmCategories::AlgorithmCategory::DEFAULT, "nonterminalsCount", "terminalsCount", "randomizedAlphabet", "density" ).setDocumentation (
+"Generates a random context free grammar.\n\
+\n\
+@param nonterminalsCount number of nonterminals in the generated grammar\n\
+@param terminalsSize the number of terminals used in the generated grammar\n\
+@param randomizedAlphabet selects random symbols from a-z range for terminal and A-Z for nonterminal alphabet if true\n\
+@param density density of the rule set of the generated grammar\n\
+@return random context free grammar" );
+
 
 } /* namespace generate */
 
diff --git a/alib2algo/src/grammar/generate/RandomGrammarFactory.h b/alib2algo/src/grammar/generate/RandomGrammarFactory.h
index cc5f3e457862f0ea4ecd2526b5aecebdbed2d397..0c965ea7a48647baf440ac0302b9c78dd4b57a29 100644
--- a/alib2algo/src/grammar/generate/RandomGrammarFactory.h
+++ b/alib2algo/src/grammar/generate/RandomGrammarFactory.h
@@ -24,8 +24,34 @@ namespace generate {
 
 class RandomGrammarFactory {
 public:
+	/**
+	 * Generates a random context free grammar.
+	 *
+	 * \tparam TerminalSymbolType the type of terminal symbols of the random grammar
+	 * \tparam NonterminalSymbolType the type of nonterminal symbols of the random grammar
+	 *
+	 * \param nonterminals the nonterminals in the generated grammar
+	 * \param terminals the terminals in the generated grammar
+	 * \param density density of the rule set of the generated grammar
+	 *
+	 * \return random context free grammar
+	 */
 	template < class TerminalSymbolType, class NonterminalSymbolType >
 	static grammar::CFG < TerminalSymbolType, NonterminalSymbolType > generateCFG ( ext::set < NonterminalSymbolType > nonterminals, ext::set < TerminalSymbolType > terminals, double density );
+
+	/**
+	 * Generates a random context free grammar.
+	 *
+	 * \tparam TerminalSymbolType the type of terminal symbols of the random grammar
+	 * \tparam NonterminalSymbolType the type of nonterminal symbols of the random grammar
+	 *
+	 * \param nonterminalsCount number of nonterminals in the generated grammar
+	 * \param terminalsSize the number of terminals used in the generated grammar
+	 * \param randomizedAlphabet selects random symbols from a-z range for terminal and A-Z for nonterminal alphabet if true
+	 * \param density density of the rule set of the generated grammar
+	 *
+	 * \return random context free grammar
+	 */
 	static grammar::CFG < std::string, std::string > generateCFG( size_t nonterminalsCount, size_t terminalsSize, bool randomizedAlphabet, double density );
 
 private:
diff --git a/alib2algo/src/grammar/generate/RandomizeGrammar.cpp b/alib2algo/src/grammar/generate/RandomizeGrammar.cpp
index e8b69b1254c7f31f8a4337ef01c6dace42f5f3d1..0eb8e714c012eba163cbb9d7cc808f9bdf314402 100644
--- a/alib2algo/src/grammar/generate/RandomizeGrammar.cpp
+++ b/alib2algo/src/grammar/generate/RandomizeGrammar.cpp
@@ -12,11 +12,35 @@ namespace grammar {
 
 namespace generate {
 
-auto RandomizeGrammarLeftRG = registration::AbstractRegister < RandomizeGrammar, grammar::LeftRG < >, const grammar::LeftRG < > & > ( RandomizeGrammar::randomize );
-auto RandomizeGrammarLeftLG = registration::AbstractRegister < RandomizeGrammar, grammar::LeftLG < >, const grammar::LeftLG < > & > ( RandomizeGrammar::randomize );
-auto RandomizeGrammarRightRG = registration::AbstractRegister < RandomizeGrammar, grammar::RightRG < >, const grammar::RightRG < > & > ( RandomizeGrammar::randomize );
-auto RandomizeGrammarRightLG = registration::AbstractRegister < RandomizeGrammar, grammar::RightLG < >, const grammar::RightLG < > & > ( RandomizeGrammar::randomize );
-auto RandomizeGrammarCFG = registration::AbstractRegister < RandomizeGrammar, grammar::CFG < >, const grammar::CFG < > & > ( RandomizeGrammar::randomize );
+auto RandomizeGrammarLeftRG = registration::AbstractRegister < RandomizeGrammar, grammar::LeftRG < >, const grammar::LeftRG < > & > ( RandomizeGrammar::randomize, "gram" ).setDocumentation (
+"Shuffle the set of nonterminal symbols.\n\
+\n\
+@param gram the grammar to shuffle\n\
+@return grammar with shuffled nonterminal symbols" );
+
+auto RandomizeGrammarLeftLG = registration::AbstractRegister < RandomizeGrammar, grammar::LeftLG < >, const grammar::LeftLG < > & > ( RandomizeGrammar::randomize, "gram" ).setDocumentation (
+"Shuffle the set of nonterminal symbols.\n\
+\n\
+@param gram the grammar to shuffle\n\
+@return grammar with shuffled nonterminal symbols" );
+
+auto RandomizeGrammarRightRG = registration::AbstractRegister < RandomizeGrammar, grammar::RightRG < >, const grammar::RightRG < > & > ( RandomizeGrammar::randomize, "gram" ).setDocumentation (
+"Shuffle the set of nonterminal symbols.\n\
+\n\
+@param gram the grammar to shuffle\n\
+@return grammar with shuffled nonterminal symbols" );
+
+auto RandomizeGrammarRightLG = registration::AbstractRegister < RandomizeGrammar, grammar::RightLG < >, const grammar::RightLG < > & > ( RandomizeGrammar::randomize, "gram" ).setDocumentation (
+"Shuffle the set of nonterminal symbols.\n\
+\n\
+@param gram the grammar to shuffle\n\
+@return grammar with shuffled nonterminal symbols" );
+
+auto RandomizeGrammarCFG = registration::AbstractRegister < RandomizeGrammar, grammar::CFG < >, const grammar::CFG < > & > ( RandomizeGrammar::randomize, "gram" ).setDocumentation (
+"Shuffle the set of nonterminal symbols.\n\
+\n\
+@param gram the grammar to shuffle\n\
+@return grammar with shuffled nonterminal symbols" );
 
 } /* namespace generate */
 
diff --git a/alib2algo/src/grammar/generate/RandomizeGrammar.h b/alib2algo/src/grammar/generate/RandomizeGrammar.h
index ed75379d5176ce84af89580c019ce12f966e796a..c6a512b90e17ef6c08656e9318b6a293be6e5bea 100644
--- a/alib2algo/src/grammar/generate/RandomizeGrammar.h
+++ b/alib2algo/src/grammar/generate/RandomizeGrammar.h
@@ -22,14 +22,40 @@ namespace generate {
 
 class RandomizeGrammar {
 public:
+	/**
+	 * Shuffle the set of nonterminal symbols.
+	 *
+	 * \tparam TerminalSymbolType the type of terminal symbols of the random grammar
+	 * \tparam NonterminalSymbolType the type of nonterminal symbols of the random grammar
+	 *
+	 * \param gram the grammar to shuffle
+	 *
+	 * \return grammar with shuffled nonterminal symbols
+	 */
 	template < class TerminalSymbolType, class NonterminalSymbolType >
 	static grammar::LeftRG < TerminalSymbolType, NonterminalSymbolType > randomize ( const grammar::LeftRG < TerminalSymbolType, NonterminalSymbolType > & gram );
+
+	/**
+	 * \override
+	 */
 	template < class TerminalSymbolType, class NonterminalSymbolType >
 	static grammar::LeftLG < TerminalSymbolType, NonterminalSymbolType > randomize ( const grammar::LeftLG < TerminalSymbolType, NonterminalSymbolType > & gram );
+
+	/**
+	 * \override
+	 */
 	template < class TerminalSymbolType, class NonterminalSymbolType >
 	static grammar::RightRG < TerminalSymbolType, NonterminalSymbolType > randomize ( const grammar::RightRG < TerminalSymbolType, NonterminalSymbolType > & gram );
+
+	/**
+	 * \override
+	 */
 	template < class TerminalSymbolType, class NonterminalSymbolType >
 	static grammar::RightLG < TerminalSymbolType, NonterminalSymbolType > randomize ( const grammar::RightLG < TerminalSymbolType, NonterminalSymbolType > & gram );
+
+	/**
+	 * \override
+	 */
 	template < class TerminalSymbolType, class NonterminalSymbolType >
 	static grammar::CFG < TerminalSymbolType, NonterminalSymbolType > randomize ( const grammar::CFG < TerminalSymbolType, NonterminalSymbolType > & gram );