private void internalRegisterEvents(Listener listener) {
		if (listener != null) {
			Method[] methods = listener.getClass().getMethods();
			for (Method method : methods) {
				if (method.getAnnotation(EventHandler.class) != null) {
					Class<?>[] parameters = method.getParameterTypes();
					if (parameters.length == 1) {
						for (Class<?> parameter : parameters) {
							if (Event.class.isAssignableFrom(parameter)) {
								if (eventList.containsKey(parameter.getName())) {
									eventList.get(parameter.getName()).addListener(listener, method);
								} else {
									ListenerRegistration registration = new ListenerRegistration();
									registration.addListener(listener, method);
									eventList.put(parameter.getName(), registration);
								}
								
							}
						}
					}
				}
			}
		}
	}