private Object callStartOrStop(Object proxy, Method method, Object[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
		if(isInjected)
			return null;
		
		//only invoke something if not dependency injected.
		//if something was dependency injected, the client
		//is responsible for it's lifecycle
		
		if(method.getName().equalsIgnoreCase(startMethodName)) {
			if(hasStartStop)
				return method.invoke(service, args);
			else {
				start();
				return null;
			}
		}
		
		//for stops, make sure we protect from exceptions...
		try {
			if(hasStartStop)
				return method.invoke(service, args);
			else
				stop();
		} catch(Throwable e) {
			log.log(Level.WARNING, "Exception in stop", e);
			return null;
		}
		return null;
	}