added a .swap() method