refactor iii