one class O - Design the API of the class so that it serves the consumers’ needs without modifying it L - Don’t let implementations of the same interface behave differently I - Don’t design big interfaces D - Depend on abstractions, not on implementations