The goal of this package is to provide class loading functionality, similar in behavior with Jboss and MLET loaders. There is no policy, just a mechanism - how it is used depends on the higher level. This package only deals with class loading, so it has to minimize the dependencies. Currently there is no dependency except bare JDK1.3. Debug logging is minimal and done using System.err. There is no JMX depenency - the modules and loaders can be registered with JMX by a module using the ModuleListener, after jmx class loader is created. TODO: conditional loading of jmx.jar, parser based on jdk version. Configuration uses a simple properties file describing the classpaths and the classes to launch - i.e. all a class loader needs to know, and similar with the old catalina.properties. To implement a good module system on top of this we need lifecycle ( already present in tomcat ) and discipline in making sure there are no stale references to objects in a module after its death. An OSGI-like system may seem to deal with the second problem - but it doesn't solve anything, it just makes the references more visible and requires major changes in how you code, as well as rewriting of most apis and implementations - and in the end it still doesn't solve the problem.