abstract classes -> traits