added a libreadline-based REPL