implemented async http fetching and caching