add .swap() method