abstract class -> trait