refactoring of interface