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.
Relevant Activities:
Adding Elements to an Interface
Restricting the Use of the Interface
Extending Visibility over Several Levels