basic support for "swapping" items of the same size