A framework for events