first implementation of Event macro, first support for external event class