Although originally developed to design user interfaces, we have found that essential use cases can be used for the object-oriented design of systems even when the interface is fixed in advance -- either because the user interface design has been completed, or because the only interfaces are to other system actors via existing protocols. To design systems with these interfaces, we begin by analyzing the interfaces and writing essential use cases to describe their interactions, and then we develop the object-oriented design from these use cases. This allows us to capture most of the benefits we have outlined -- in particular, we can design the system focusing on the essential parts of the interactions, especially the system responsibilities -- and also gives some confidence that the internal system design will be stable in the face of changes to the details of these interfaces.