This paper presents the outline of a module system for the Scheme programming language in order to solve several problems commonly encountered with contemporary implementations. These problems include the lack of support for separate compilation and cross-module type checking as well as the necessity for non-standard language extensions to aid certain compiler optimizations like open compilation and procedure in-lining. Even though Scheme needs to be augmented with concepts like modules, types, and signatures, this will not change the spirit of the language in a major way. Instead it turns out that other recent additions to the language interact smoothly with the proposed module system. It will be emphasized that it is necessary to make a clean distinction between syntactic definitions and value definition -- reflected by a textual separation of modules and their signatures.