Use custom callbacks and proper argument types to follow the ABI.
Tabs -> whitespace.