made more progress with list_delete, but I still don't know the last edge case