refactored and added lookahead