Synchronized getInstance methods, added an event system, and documented 
everything.