Modules and interfaces are the basic building blocks of Modula-3 programs. A module is a named collection of declarations, including constants, types, variables, and procedures. A module can make its facilities available to other modules by exporting its functionality to its clients through an interface.
An interface describes what clients see of a module; it gives only the types and procedure interfaces that are needed for clients to use the module. Each module also contains some code, called the implementation or sometimes just the module, which fills in procedure definitions and other private declarations. These private declarations are hidden from clients.