@Override
    public com.flickr4java.flickr.Response get(String path, Map<String, Object> parameters, String sharedSecret) {

        OAuthRequest request = new OAuthRequest(Verb.GET, API_HOST + path);
        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
            request.addQuerystringParameter(entry.getKey(), String.valueOf(entry.getValue()));
        }

        if (proxyAuth) {
            request.addHeader("Proxy-Authorization", "Basic " + getProxyCredentials());
        }

        RequestContext requestContext = RequestContext.getRequestContext();
        Auth auth = requestContext.getAuth();
        if (auth != null){
            Token requestToken = new Token(auth.getToken(), auth.getTokenSecret());
            OAuthService service = createOAuthService(parameters, sharedSecret);
            service.signRequest(requestToken, request);
        }

        if (Flickr.debugRequest) {
            logger.debug("GET: " + request.getCompleteUrl());
        }
        setTimeouts(request);
        org.scribe.model.Response scribeResponse = request.send();

        try {

            com.flickr4java.flickr.Response response = null;
            synchronized (mutex) {
                String strXml = scribeResponse.getBody();
                if (Flickr.debugStream) {
                    logger.debug(strXml);
                }
                Document document = builder.parse(new InputSource(new StringReader(strXml)));
                response = (com.flickr4java.flickr.Response) responseClass.newInstance();
                response.parse(document);
            }
            return response;
        } catch (IllegalAccessException e) {
            throw new FlickrRuntimeException(e);
        } catch (InstantiationException e) {
            throw new FlickrRuntimeException(e);
        } catch (SAXException e) {
            throw new FlickrRuntimeException(e);
        } catch (IOException e) {
            throw new FlickrRuntimeException(e);
        }
    }