This document discusses two small designs in WebKit: the opaque pointer pattern and private data class pattern. It explains the benefits of using these patterns, such as hiding implementation details, reducing coupling, and allowing separate evolution of interfaces and implementations. It also compares opaque pointers and pimpl, noting that pimpl provides more pure encapsulation and minimizes coupling. Overall it promotes learning design patterns and idioms through small examples.