first, over-engineered version of the prototype interpreter