refactor events on router, allows event interception for controllers