second round of major refactoring