+ add scan function