refactoring requirements