refactor interface.