A complete (and simpler) reimplementation
Add REPL + quotes