Broad Issues to Consider in Design
1. Interface
The classes, methods, parameters, names
2. Resource Management
How is memory, other resources dealt with
3. Error Handling
What errors are caught and what is done
Information Hiding
How much detail is exposed
Impacts all three of the above