added async to manage callback hell