Switched to using a Control to handle event listening

This way a single MutationObserver, which might be observing multiple
elements, will only need a single event listener for each element.