diff --git a/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp b/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp
index bdc047df55fd214fed1de9d859f1d5eaf2e509ad..65f351a6d792ff5464e1a470cf1affd794900af8 100644
--- a/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp
+++ b/alib2algo/src/grammar/generate/RandomGrammarFactory.cpp
@@ -35,7 +35,7 @@ grammar::CFG RandomGrammarFactory::generateCFG( size_t nonterminalsCount, size_t
 		throw exception::AlibException("Too big nonterminals count.");
 
 	std::vector<alphabet::Symbol> symbols2;
-	for(int i = 0; i < 26; i++) symbols2.push_back(alphabet::symbolFrom(i + 'a'));
+	for(int i = 0; i < 26; i++) symbols2.push_back(alphabet::symbolFrom(i + 'A'));
 	if(randomizedAlphabet) random_shuffle(symbols2.begin(), symbols2.end());
 	std::deque<alphabet::Symbol> nonterminals(symbols2.begin(), symbols2.begin() + nonterminalsCount);
 
diff --git a/alib2data/src/grammar/common/TerminalNonterminalAlphabetInitialSymbol.cpp b/alib2data/src/grammar/common/TerminalNonterminalAlphabetInitialSymbol.cpp
index b201de1dd3f26126f63a82cdf3b371b41bf4f742..f5871fc07ed207b6570b28fe036b45a2e138e826 100644
--- a/alib2data/src/grammar/common/TerminalNonterminalAlphabetInitialSymbol.cpp
+++ b/alib2data/src/grammar/common/TerminalNonterminalAlphabetInitialSymbol.cpp
@@ -42,7 +42,10 @@ void TerminalNonterminalAlphabetInitialSymbol::setTerminalAlphabet(std::set<alph
 	for(const alphabet::Symbol& removedSymbol : removed) {
 		removeTerminalSymbol(removedSymbol);
 	}
-	// TODO check intersection with nonterminal alphabet
+
+	if(!std::excludes(terminalAlphabet.begin(), terminalAlphabet.end(), nonterminalAlphabet.begin(), nonterminalAlphabet.end()))
+		throw GrammarException("Terminal alphabet and nonterminal alphabet intersect");
+
 	terminalAlphabet = std::move(alphabet);
 }
 
@@ -65,7 +68,10 @@ void TerminalNonterminalAlphabetInitialSymbol::setNonterminalAlphabet(std::set<a
 	for(const alphabet::Symbol& removedSymbol : removed) {
 		removeNonterminalSymbol(removedSymbol);
 	}
-	// TODO check intersection with nonterminal alphabet
+
+	if(!std::excludes(terminalAlphabet.begin(), terminalAlphabet.end(), nonterminalAlphabet.begin(), nonterminalAlphabet.end()))
+		throw GrammarException("Terminal alphabet and nonterminal alphabet intersect");
+
 	nonterminalAlphabet = std::move(alphabet);
 }