new version of the lexer