public void fire (IEvent event) throws Exception {
		for (IHandler handler : this) {
			// skip cancelled events
			if (event instanceof ICancellableEvent && ((ICancellableEvent) event).isCancelled () && ((ICancellableEvent) event).isCancelled () && !handler.acceptsCancelledEvents ()) continue;

			// call handler
			handler.handle (event);
		}
	}