working on async function part