Add ability to pass arbitrary data to callbacks