EventHook and observer pattern for callbacks/events