working on better lexer