in-progress refactoring