lexer is pretty good now