There are way too many global variables in the interpreter. These need to be cleaned up and organized. In the 4.0 code base, I started organizing these by determining whether these were portable values or platform specific. Portable values were added as protected static members to an Interpreter class with appropriate methods controlling access. Platform-specific values were managed the same way by creating a SysInterpreter class that did the same thing. This eliminated a lot of "include file grunge" and placed a clearer level of ownership and control over the global data.