Implement `swap()`