	private <V> void requestAsynchronously(final AsyncCallback<V> callback,
			final HttpUriRequest request,
			final ResponseProcessor<V> responseProcessor) {
		Thread thread = new Thread() {
			public void run() {
				try {
					Log.d(TAG, "requesting asynchronously " + request.getURI());
					HttpResponse response = httpClient.execute(request);
					int statusCode = response.getStatusLine().getStatusCode();
					Log.d(TAG, "got response code " + statusCode);
					if (statusCode == 200) {
						V result = null;
						if (responseProcessor != null) {
							Log.d(TAG, "processing response");
							result = responseProcessor
									.processResponse(response);
						}
						Log.d(TAG, "onSuccess");
						callback.onSuccess(result);
					} else {
						Log.d(TAG, "onFailure");
						callback.onFailure(null);
					}
					if (response.getEntity() != null) {
						response.getEntity().consumeContent();
					}
				} catch (ClientProtocolException e) {
					callback.onFailure(e);
				} catch (IOException e) {
					callback.onFailure(e);
				} catch (IllegalStateException e) {
					callback.onFailure(e);
				} catch (JSONException e) {
					callback.onFailure(e);
				}
			}
		};
		thread.start();
	}

	private <V> void requestAsynchronously(final AsyncCallback<V> callback,
			final HttpUriRequest request,
			final ResponseProcessor<V> responseProcessor) {
		Thread thread = new Thread() {
			public void run() {
				try {
					Log.d(TAG, "requesting asynchronously " + request.getURI());
					HttpResponse response = httpClient.execute(request);
					int statusCode = response.getStatusLine().getStatusCode();
					Log.d(TAG, "got response code " + statusCode);
					if (statusCode == 200) {
						V result = null;
						if (responseProcessor != null) {
							Log.d(TAG, "processing response");
							result = responseProcessor
									.processResponse(response);
						}
						Log.d(TAG, "onSuccess");
						callback.onSuccess(result);
					} else {
						Log.d(TAG, "onFailure");
						callback.onFailure(new Throwable("Unexpected status code: " + statusCode));
					}
					if (response.getEntity() != null) {
						response.getEntity().consumeContent();
					}
				} catch (ClientProtocolException e) {
					callback.onFailure(e);
				} catch (IOException e) {
					callback.onFailure(e);
				} catch (IllegalStateException e) {
					callback.onFailure(e);
				} catch (JSONException e) {
					callback.onFailure(e);
				}
			}
		};
		thread.start();
	}
