rewrite async loader api