private void registerListener(Object o) {
		Class<?> clazz = o.getClass();
		Method [] methods = clazz.getDeclaredMethods();
		
		for (Method m : methods) {
			if (m.isAnnotationPresent(EventCallback.class)){
				EventCallback cb = (EventCallback) m.getAnnotation(EventCallback.class);
				if (cb.ignore()) continue;
				String signal = cb.signal();
				if (cb.signal().equals("")){
					signal = methodNameToSignal(m.getName());
				}
				if (signal == null) {
					System.err.println("Signal not found for method : "+m);
					continue;
				}
				connectSignal(signal, findLocalMethod(m.getName()), cb.when());
			} else if (m.getName().startsWith("on")){
				String signal = methodNameToSignal(m.getName());
				connectSignal(signal, findLocalMethod(m.getName()), CONNECT_BEFORE);
			}
		}
	}