fleshed out event-system interface