when we can't have U super T, make invariant; fix example; add constructor