impl refactoring