Moved scanning logic to it's own class, added a single-point-of-entry, and navigation class