worked on invariants