Support writing needed extension types

@nwolfe I'm going to change this back to the `(boolean critical)` form to be more idiomatic. Is that cool?