ready to implement swap and delete_all