reorganise mixin.event code a little