perfecting barcode scanner