update
add delete func