more work on lexer