refactoring work on interfaces