Use Option for a nullable callback, as it is the proper way
Implement some more functions.

The macros are there for reference, can't be actually used due to limitations of the macro system