( P.S. following discussion, maybe the *real* clarity point here is just to separate type-choice, checking, and instantiation. )