refactoring: react components