implemented repl