add _transfer_if_modified and _place_if_modified