the component model