Updated EventMonitor with generics