A module encapsulates the contained code; details of any classes it contains are visible only to other code in the module. However, these details are fully exposed to code within a module. Thus, routine implementations in a module have full access to internal details of classes within the module. Similarly, classes within the same module can take advantage of implementation-specific details of one another.