complete refactor to flatten event handlers with bind