refactor all modules to allow for events and correct prototypal inheritance