refactored components