refactor AsyncCache