Chapter 6. Using Protocols and Protocol Extensions