@cy: what I mean is that nullableThing?.foo (where foo is of type X) is a map (Thing?)->X. And nullableThing?.bar (where bar is of type Y?) is a flatMap (Thing?)-> Y?. Similarly (but different syntax) nullableThing?.let(fn) is a map or flatMap depending on the return type of fn.