Modify to use async task