add swap_again feature