MNT: refactor the dispatcher; now patches user callbacks instead
MNT: monitordispatcher's now a class