refactor in-progress