public boolean registerEventListener(final EventListener listener) {
		logger.debug("EventBus", "Registering "+listener.getClass().getName(), 0);
		try {
			for(Method method : listener.getClass().getMethods()) {
				EventMethod ema = method.getAnnotation(EventMethod.class);
				if(ema == null) continue;

				Class<?>[] parameters = method.getParameterTypes();
				if(parameters.length != 1) {
					logger.printException(new IllegalArgumentException(
							"Method "+method.getName()+" (EventListener "+listener.getClass().getCanonicalName()+
							") has the wrong amount of arguments ("+parameters.length+")! EventMethods require "+
							"one (1) argument. Please contact the dev to have this issue fixed."));
					return false;
				}
				
				Class<?> eventType = parameters[0];
				if(!IEvent.class.isAssignableFrom(eventType)) {
					logger.printException(new IllegalArgumentException(
							"Method "+method.getName()+"'s (EventListener "+listener.getClass().getCanonicalName()+
							") arguement does not implement the IEvent interface or extend a class that does so!"));
					return false;
				}
				
				return true;
			}
		} catch(Exception e) {
			logger.printException(e);
			return false;
		}
		return false;
	}