case Some(User(_, _, Some(address))) if postOfficeValid(address) => address.success case Some(User(_ , _, Some(address))) => "Invalid address: Not recognized by postal service".failureNel case Some(User(_, _, None)) => "User has no defined address".failureNel case None => "No such user".failureNel } } • Or we can use some helpful shortcuts and call .failureNel, and declare a ValidationNel return type.