normalize types
always pull out productions (again)