I think `sealed abstract class` is better than `sealed trait`