invariant clause improved