refactoring background