more work on the lexer