refactoring interface