refact http fetcher