Factored out the interpreter