\begin{abstract}

Module systems for handling collections of classes have been
traditionally based on a container with meta-data such
as versions, imports and exports. We present a different perspective
on modules by treating them as object-oriented types for class 
collections, and (non-formally) define relations and operations on these types. 
We demonstrate that these model common module operations and constraints 
now in use while adding new capabilities not present in existing systems, 
such as backward compatibility constraints, fine-grained module sharing specifications
and module extension. The type system itself is implemented in a module-enabled
compiler for Java using JastAdd, an aspect-oriented compiler framework, and
is demonstrated on a small case study on JHotdraw 7.1. 

\end{abstract}