trying to add a lexer to take some work out of the parser