add Trait support