extra refactoring