Clarify the typedefs.
Typedef the blocks.
Move the parameters around + documentation.

Because it feels better to have blocks at the end.
Add a convenience wrapped if notifications are not wanted.

And use that in tests.