@Override
	public <T extends Serializable> void submit(Callable<T> job, IJob<T> callBack)
			throws RemoteException {
		// if no services are registered nothing can be computed
		if (services.size() == 0)
			callBack.setRefused(true);

		// iterate over services and search for a free one
		for (int i = nextServiceNumber; i < services.size() + nextServiceNumber; i++) {
			// grab service
			IJobProcessingService currentService = services.get(i);
			// if service has free threads
			if (currentService.getFreeThreadCount() > 0) {
				nextServiceNumber = i + 1;				
				if (nextServiceNumber == services.size())
					nextServiceNumber = 0;
				
				// submit the job
				currentService.submit(job, callBack);

				// if job was accepted and returned a result, return to client,
				// else continue
				if (callBack.isRefused() == false)
					return;
			}
		}

		// no free services
		callBack.setRefused(true);
	}