updated to using EventHandler<T>