This is really add_or_edit, but that looks ugly to me, and doesn't follow naming methods in other places.