initial repl implementation