update
base functino