use async worker