interface and component refactoring