FIX bug with invariant
Simpler swap