remove async, review codes