A component-based CMS experiment