A structure for the server (provider) package hierarchy is already available in this use case. The package interfaces may or may not be available.
You
use the package interfaces to specify which repository objects you want to be
visible to other packages. When you
add elements to interfaces, you can group them according to semantic or use
criteria.
You can also nest packages at different levels, and specify at each level
whether you want to release the elements of the interface. Finally you can
apply constraints to the use of an interface, by naming exclusive users.
Adding Elements to an Interface
Restricting the Use of the Interface
Extending Visibility over Several Levels