refactoring all