Complete implementation of events and associated classes