add detect swap function