cedric
sealed class Envelope<T, E> { class Success<T>(val data: T): Envelope<T,E>() class Error<E, T>(val err: E, val extra: String): Envelope<T, E>() }