Languages which provide separate compilation features through the module or package concepts (such as Modula-2 and Ada) have some little-known problems with maintaining integrity and also achieving optimizations that cross the module boundaries. The paper addresses these questions using Modula-2 as the example language, and proposes a number of different methods of constructing Modula-2 processors (systems that run Modula-2 programs) which have properties different from the conventional structure of such processors.