# Encapsulation ## Concepts * Top down design (Don't mention directly) * Encapsulation and Abstraction * Maintaining Compatibility * Nuances and Trade-offs * Hiding Implementation Details * Leaky Abstraction ## Other C++ specific stuff * `std::initializer_list` * `std::optional` (optional values v.s. exceptions)