rewrite async module