big update to lexer