change to use pure AsyncTask