invariant improvements