public Geocache createGeocache() {
            if (error || StringUtils.isBlank(gccode)) {
                return null;
            }
            final Geocache cache = new Geocache();
            //set stump data
            cache.setGeocode(gccode);
            cache.setCategories(getCategories());
            cache.setTier(getTier());

            if (!hasFullData()) {
                return cache;
            }

            //set other data
            // "name": "Vaters letzter Wille",
            cache.setName(name);
            // "lat": "48.132984",
            // "lng": "10.241067",
            cache.setCoords(GeopointParser.parse(lat + " " + lng, null));
            // "type": "unknown",
            cache.setType(getFromJson(CACHE_TYPE_MAP, type, CacheType.UNKNOWN));
            // "difficulty": "4.5",
            cache.setDifficulty(getNumberFromJson(difficulty, 0));
            // "terrain": "1.5",
            cache.setTerrain(getNumberFromJson(terrain, 0));
            // "size": "large", possible values are: micro, small, regular, large, other, v
            cache.setSize(getFromJson(CACHE_SIZE_MAP, size, CacheSize.UNKNOWN));
            // "state": "Germany",
            // "country": "Bayern",
            cache.setLocation(getLocation(state, country));

            //Not used:
            // "acceptedOn": "2015-07-12 17:22:45",

            return cache;
        }
Encapsulates the raw APi calls to bettercacher.org
main/src/main/java/cgeo/geocaching/connector/bettercacher/BetterCacherAPI.java