    public Brand fetch(String uri) {
        LOG.info("Retrieving Hulu brand: " + uri + " with " + httpClient.getClass() + " : " + httpClient.toString());
        String content = getContent(uri);
        if (content != null) {
            HtmlNavigator navigator = new HtmlNavigator(content);
            Brand brand = extractor.extract(navigator);
            List<Item> episodes = Lists.newArrayList();
            if (episodeAdapter != null) {
                for (Item item : brand.getItems()) {
                    try {
                        Episode episode = episodeAdapter.fetch(item.getCanonicalUri());
                        episode.setBrand(brand);
                        episodes.add(episode);
                    } catch (FetchException fe) {
                        LOG.warn("Failed to retrieve episode: " + item.getCanonicalUri() + " with message: " + fe.getMessage() + " with cause: " + fe.getCause().getMessage());
                    }
                }
                brand.setItems(episodes);
            }
            LOG.info("Retrieved Hulu brand: " + uri + " with " + brand.getItems().size() + " episodes");
            return brand;
        } else {
            throw new FetchException("Unable to retrieve brand from Hulu: " + uri + " after a number of attempts");
        }
    }

    public Brand fetch(String uri) {
        LOG.info("Retrieving Hulu brand: " + uri + " with " + httpClient.getClass() + " : " + httpClient.toString());
        String content = getContent(uri);
        if (content != null) {
            HtmlNavigator navigator = new HtmlNavigator(content);
            Brand brand = extractor.extract(navigator);
            List<Item> episodes = Lists.newArrayList();
            if (episodeAdapter != null) {
                for (Item item : brand.getItems()) {
                    try {
                        Episode episode = episodeAdapter.fetch(item.getCanonicalUri());
                        episode.setBrand(brand);
                        episodes.add(episode);
                    } catch (FetchException fe) {
                        LOG.warn("Failed to retrieve episode: " + item.getCanonicalUri() + " with message: " + fe.getMessage());
                    }
                }
                brand.setItems(episodes);
            }
            LOG.info("Retrieved Hulu brand: " + uri + " with " + brand.getItems().size() + " episodes");
            return brand;
        } else {
            throw new FetchException("Unable to retrieve brand from Hulu: " + uri + " after a number of attempts");
        }
    }
