Would prefer to use trait rather than abstract class