refactor III