refactoring for new Interface