Incomplete - added swap, TODO: create another example to test swap