class GeosupportServiceImpl implements GeosupportService {

    @Override
    public Map<String, Object> callFunction3(final String onStreet, final String boroughOnStreet,
            final String crossStreetOne, final String boroughCrossStreetOne, final String crossStreetTwo,
            final String boroughCrossStreetTwo, final String compassDirection) {
        return new Call(serviceConfiguration.function3(), serviceConfiguration.latLongEnhancer()) {
            @Override
            public Map<String, Object> userArguments() {
                Map<String, Object> params = new HashMap<String, Object>();
                params.put(STREET_NAME, onStreet);
                params.put(STREET_NAME2, crossStreetOne);
                params.put(STREET_NAME3, crossStreetTwo);
                params.put(BOROUGH_CODE, Boroughs.parseInt(boroughOnStreet));
                if (boroughCrossStreetOne != null) {
                    params.put(BOROUGH_CODE2, Boroughs.parseInt(boroughCrossStreetOne));
                }
                if (boroughCrossStreetTwo != null) {
                    params.put(BOROUGH_CODE3, Boroughs.parseInt(boroughCrossStreetTwo));
                }
                if (compassDirection != null) {
                    params.put(COMPASS_DIRECTION, compassDirection);
                }
                return params;
            }
        }.execute();
    }

    public  GeosupportServiceImpl(AppConfig serviceConfiguration);

}