should be "sealed trait"