Refactoring, implementing up and down bubbling events. Yet completely untested though.