private NearbyPlacesResponse findNearbyPlaces(RequestBean request) throws CitysearchException {
        NearbyPlacesResponse response = new NearbyPlacesResponse();

        List<NearbyPlace> nearbyPlaces = getAdsFromPFP(request, null, getDisplaySize());

        List<NearbyPlace> backfill = null;
        List<HouseAd> houseAds = null;
        List<NearbyPlace> searchResults = null;

        int noOfBackFillNeeded = (nearbyPlaces == null || nearbyPlaces.isEmpty()) ? displaySize
                : displaySize - nearbyPlaces.size();
        if (noOfBackFillNeeded > 0) {
            backfill = getNearbyPlacesBackfill(request, noOfBackFillNeeded);
            int noOfHouseAdsNeeded = (backfill == null || backfill.isEmpty()) ? noOfBackFillNeeded
                    : noOfBackFillNeeded - backfill.size();
            if (noOfHouseAdsNeeded > 0) {
                houseAds = HouseAdsUtil.getHouseAds(getContextPath(),
                        request.getDartClickTrackUrl());
                houseAds = houseAds.subList(0, noOfHouseAdsNeeded);
            } else if (noOfHouseAdsNeeded < 0) {
                backfill = backfill.subList(0, noOfBackFillNeeded);
            }
        }
        
        response.setNearbyPlaces(nearbyPlaces);
        response.setBackfill(backfill);
        response.setSearchResults(searchResults);
        response.setHouseAds(houseAds);
        return response;
    }