add SWAP macro