Additional features:
- allow multiple callbacks to be registered
- callbacks can be objects or functions