move swapping to macro
look good