visitor pattern for events: AbstractEventProcessor