more incremental refactoring