add scan, refactor update_item