implemented SwapMove