better threading model on network request