support for asynchronous subroutines; TODO update docs