Requiring a plugin to throw the event feels a bit ugly to me.  Could this instead by handled by the implementation?