further refactoring prereqs