has_component use case