add callbacks and messaging