a cleaner way to scan and return results, etc