A start on lexer-based version