Support writing needed extension types

I thought it was more versatile when I was doing `(boolean critical)` but @nwolfe didn't like it.