update
add select function