Separated variable contexts into locals and globals, documented argument consumption, allowed passing of functions as arguments, and added interpreter reset