add AsyncFetcher class