refactored traits