Refactor EventHandler to accept callbacks too