add async tasks to burden off the ui thread