public PagarMeQueryResponse execute(){
		try {
			UriBuilder builder = UriBuilder.fromPath(API_ENDPOINT);
			builder.path(path);


			StringBuilder query = new StringBuilder();
			query.append(MapUtil.listOfMapToString(queries));

			if(!method.toUpperCase().equals("POST") && !method.toUpperCase().equals("PUT")){
				builder.replaceQuery(MapUtil.listOfMapToString(queries));
			}

			if(take > 0)
				addQuery("count", ""+take);

			request = (HttpURLConnection) builder.build(this).toURL().openConnection();
			request.setRequestMethod(method);
			request.addRequestProperty("User-Agent",USER_AGENT);

			if(method.toUpperCase().equals("POST") || method.toUpperCase().equals("PUT")){
				byte[] payload = MapUtil.listOfMapToString(queries).getBytes();
				request.addRequestProperty("Content-Length",""+payload.length);
				request.addRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
				request.setDoInput(true);
				request.setDoOutput(true);
				DataOutputStream output =  new DataOutputStream(request.getOutputStream());
				output.write(payload, 0, payload.length);
				output.flush();
				output.close();
			}

			try {	
				is = request.getInputStream();
				responseCode = request.getResponseCode();	
			} catch (IOException e) {
				is = request.getErrorStream();
				responseCode = request.getResponseCode();
			}

			reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
			String line;
			StringBuffer rp = new StringBuffer(); 
			while((line = reader.readLine()) != null) {
				rp.append(line);
				rp.append('\r');
			}

			reader.close();
			pagarMeResponse = new PagarMeQueryResponse();
			pagarMeResponse.setStatus(responseCode);
			pagarMeResponse.setData(rp.toString());
			return pagarMeResponse;

		} catch (PagarMeException e) {
			pagarMeResponse = new PagarMeQueryResponse();
			pagarMeResponse.setData(e.getMessage());
			return pagarMeResponse;
		}catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}