abstract implementation, complete type: component with provided and required interfaces leave internal structure open
when does a component implement a type? exactly the same provided and required interfaces, but this would be too restrictive
One expects something like shown in Figure XXX
a component can provide more than its type and require less. This principle is called contra-variance.