async code now more general and fully async
abstracted messaging