whether A and B are a values in memory (i.e. lists) or that’ll come in the future (i.e. Observable) is not reflected in the behavior, meaning that as an interface it’s not very powerful in what it allows you to do. This is good because there are not many surprises when using it, and when all you need is to map from one type to another as long as they’re both inside the same wrapper, i.e. serialization and deserialization