refactoring depending on