protected Request executeTheRequest() throws Exception {
		Request requestObject = null;
		java.lang.Class<?> RequestObjectClass = null;
		Class<?>[] couldHandleParamTypes = new Class[] { HTTPVerb.class,
				String.class };
		Object[] couldHandleParams = new Object[] { this.verb, this.path };

		for (int i = 0; i < this.possibleHandlers.size(); i++) {
			RequestObjectClass = this.possibleHandlers.get(i);
			Method couldHandle = null;

			try {
				couldHandle = RequestObjectClass.getDeclaredMethod(
						"couldHandle", couldHandleParamTypes);
				Boolean result = (Boolean) couldHandle.invoke(
						RequestObjectClass, couldHandleParams);
				if (result.booleanValue()) {
					requestObject = (Request) RequestObjectClass.newInstance();
					requestObject.setRequestThread(this);

					break;
				}
			} catch (Exception e) {
				couldHandle = null;
			}
		}

		if (requestObject == null) {
			this.close(404, "Not found");
		} else {
			requestObject.handle();
			this.addPossibleP300Host();
		}

		return requestObject;

	}