Scanning now works via JSON and uses a progress bar.