added async
async reduce