fleshed out much more of the logic for fetcher