more work for lexer