refine
fix async bug. add progress.