Trait abstraction to remove duplication