The component model can encapsulate its contents in a hard way as is done in COM, RCOM and .Net or it can be done in a softer way as is done in C++. The level of encapsulation depends on the way that elements that are not exposed via interfaces are hidden from the clients of the components. This holds for direct access of assets and internal routines. Hard encapsulation has two advantages. It gives the component the chance to prevent unexpected corruption of its internal state. Further, it gives the designer of the component the chance to hide the intellectual property that is invested in the design. An indirect consequence is that components can be designed as independent well-defined robust products.