ui: prevents event from bubbling up
refactoring: extracts object app into its own file