refactoring the interpreter so that the relationship to the code generator will be much more clear
keeping the code synced up with the manual example