public HTTPURLRequestOperation operationWithURLRequest(URLRequest request, HTTPCompletion completion) {

        HTTPURLRequestOperation operation = null;

        for (String className : this.registeredOperationClassNames) {
            try {
                Class<?> cl = Class.forName("com.javanetworking."+className);
                Constructor<?>[] constructors = cl.getConstructors();

                Class<?>[] paramsTypes = null;
                for (Constructor<?> constructor : constructors) {
                    paramsTypes = constructor.getParameterTypes();
                    if (paramsTypes.length == 2) {
                        break;
                    }
                }
                Constructor<?> constructor = cl.getConstructor(paramsTypes[0], paramsTypes[1]);
                operation = (HTTPURLRequestOperation) constructor.newInstance(request, null);
                operation.setCompletion(completion);

                break;

            } catch (Exception e) {
                operation = HTTPURLRequestOperation.operationWithURLRequest(request, completion);
                break;
            }
        }

        return operation;
    }