consistent type hierarchy