clean refactoring