make core and async versions explicit