@Override
	public IEvent emit(IEvent event) {
		Iterator<Map<Class<? extends IEvent>, List<IEventListener>>> itr = this.mapListeners.values().iterator();
		while (itr.hasNext()) {
			Map<Class<? extends IEvent>, List<IEventListener>> mapListener = itr.next();
			List<IEventListener> listeners = mapListener.get(event.getClass());
			if (listeners != null) {
				Iterator<IEventListener> itre = listeners.iterator();
				
				while(itre.hasNext()) {
					event = itre.next().handleEvent(event);
				}
			}
		}
		
		return event;
	}