use invariant