Switch to httpclient library, add more methods for fetching remote data, refactor