public void addListener(CogaenId eventTypeId, EventListener listener) {
		if (isEngaged()) {
			throw new IllegalStateException("can't add listener if event dispatcher is engaged");
		}
		
		ArrayList<EventListener> listeners = this.listenerMap.get(eventTypeId);
		if (listeners == null) {
			listeners = new ArrayList<EventListener>();
			this.listenerMap.put(eventTypeId, listeners);
		}
		
		listeners.add(listener);
	}