use async and change usage