some interface refactoring