refactoring part III