Add Mixin::Event::Dispatch in as a parent to your class, and it'll provide some methods for defining event handlers ("subscribe_to_event" or "add_handler_for_event") and calling them ("invoke_event"). Note that handlers should return 0 for a one-off handler, and 1 if it should be called again on the next event.