// Static methods
  public static void fetchAllCampaigns(final APIResponseHandler responseHandler) {
    APIClient.get(
        Constants.ENDPOINT_FEATURED_CAMPAIGNS,
        new JsonHttpResponseHandler() {
          @Override
          public void onSuccess(int statusCode, Header[] headers, JSONArray responseArray) {
            super.onSuccess(statusCode, headers, responseArray);
            final Campaign[] campaigns = new Campaign[responseArray.length()];

            for (int i = 0; i < responseArray.length(); ++i) {
              JSONObject responseObject;
              Campaign campaign;

              responseObject = JSONProcessor.jsonObjectFromArray(responseArray, i);

              campaign = campaignFromJSONObject(responseObject);
              campaigns[i] = campaign;
            }

            responseHandler.onCompletion(campaigns, null);
          }

          @Override
          public void onFailure(
              int statusCode, Header[] headers, String responseString, Throwable throwable) {
            super.onFailure(statusCode, headers, responseString, throwable);

            responseHandler.onCompletion((Campaign[]) null, throwable);
          }
        });
  }