Separated code into modules - improved unloading.

One of the advantages of using modules is that they won't unload unless
all listeners and observers are unloaded.  This helps to catch danglers
that would otherwise easily go unnoticed.
Removed unnecessary style/class specifications.