Changes based on PR comments

Create a type for the locations enum, don't type check
presentedViewController, and lazy load private properties.