Generic trait refactored