sealed class Result { data class Success(val value: T): Result() object Failure: Result() }