Polished singletons code for readability purposes.
Reworked init sequence and class dependencies.

This is the first step in a complete restructuring. Making everything
less messy and easier to maintain.
Cleaned up code related to internal events.