Since it's possible that we might at some point want to add things that are not buttons, what about changing `button` -> `element`?
Also, what about changing `event` -> `handler` (or maybe `eventHandler`)?