Refactor base class

* remove static methods
* refactor 'sneaky' code
* formatting, code style, and docblocks
* add Observer and Notifier interfaces
* update dependent classes
* update autoload configs
* anticipates namespacing