public void doGuess( String letter ) {
		if ( ! isReady()
		||   ! letter.matches( "[A-Z]|[a-z]" ))
			return;
			
		
		if (usedLetters.contains( letter )) {
			onRedundantLetter.execute( letter );
			return;
		}
		
		
		boolean isGoodGuess = guessLetterAndReveal( letter );
		boolean isComplete  = ! getWordFormatted().contains( "_" );
		
		
		if (isGoodGuess) {
			 onGoodGuess.execute();
			 
			 if (isComplete)
				 endGame( true );
		}
		else {
			onBadGuess.execute();
			
			if ( ! hasGuessesLeft.evaluate())
				endGame( false );
		}
	}