transform to AsyncTask