Integrating changes by @rachelslaybaugh and trying to address some remaining issues.