Use interfaces for implementation and client.