Rewrite set-callbacks function

Fn -> Macro
Rename to with-callbacks
Add tests