multi-assignment swaps now work