AddTrait and RemoveTrait events, refactor