#update - reinstate callbacks
#update - reinstate synchronous function invocation
#add - docs