Refactor to take advantage of event bubbling