make the completion handler penetrate deeper