Appearance
Design principle: Isolate different parts of a program that address different concerns A modular component can be developed and tested independently
A component should know as little as possible other concerns