Extracted scatter_swap to its own gem