Support writing needed extension types

Will we not need this as part of the public API?