add functions to allow asynchronous notifications and interleaved command/response