It's made to keep the public callback API decoupled from the event dispatcher.