implement single async thread