* avoid makework when null callbacks are passed
* allow clearing callbacks
* test callback use