progress and refactoring