Keep no internal package state. Ditch namespace argument in register callback. Allow for sync registers.
Switch to more functional style. No objects, and no encapsulated states.
Removed useless test.