refactoring components