sealed trait Validation[E, X] final case class Failure[E, X](e: E) extends Validation[E, X] final case class Success[E, X](x: X) extends Validation[E, X]