interface refactoring