moved before/after listeners into Trigger class