Design principles:
- Make the common easy, and make the uncommon possible.
- Make it easy to use, and hard to abuse.
- Do one job, and do it well.
- Apply the Principle of Least Astonishment
- Don't fix a performance problem that you don't have.
- Today's unit tests are tomorrow's regression tests.