swaps need to preserve contents