Callbacks

This PR depends on #3 and #4. Once those both are merged I'll update this to show just the diff of the last 3 commits.