Reworking some core types, balancing under-specification and over-specification.