refactoring, implementing