most of subst, need weakening on environments with has_type