Support writing needed extension types

Ah, okay. I was curious since you originally had this as a top-level interface (i.e. public).