refactor lexer