feature: add support for callbacks