The interface is in effect a contract between the supplier and the customer. The desire is to provide services that are uniform and convenient, with enough functionality to be easy to use but not so much as to become unwieldy.
An interface must provide straightfoward access to the components while hiding the details of the implementation so they can be changed without affecting users.
Here, the main problems are allocating and freeing storage, and managing shared copies of information.