add new swap func