progress
refactor