public <TEvent> void broadcast(TEvent event) throws InvocationTargetException, IllegalAccessException {
        for(EventHandler eh : _subscriptions) {

            ArrayList<SingleParameterMethodData> methods = getSingleParameterMethodData(eh.getUUID());
            boolean calledAny = false;
            if(methods != null) {
                for(SingleParameterMethodData method : methods){
                    if(method.getParameterType() == event.getClass()) {
                        method.getMethod().invoke(eh, event);
                        calledAny = true;
                    }
                }
            }
            if(!calledAny) {
                broadcastToMethod(eh, event);
            }
        }
    }