The reason that good interfaces are few and far between is really quite simple: they are extremely difficult to design and build properly. This book elucidates an overarching framework for design that can be applied to the broad spectrum of existing domains.