better invariants