add the ability to handle async tasks