refactoring facade