Use trait instead of abstract class