move sub-type specific method to trait