1. Purposes

2. Requirements

3. Code organization

4. Trade-offs

5. API and ABI