[ new ] Carving out the subset of normal forms

This is one obvious attempt at having more precise types.