type coherence