trying to refactor the interpreter to take 1 step at a time.
fixed interpreter