refactor progress