Getting Started with Protocol Oriented Programming
Leveraging Protocol Oriented Programming for Unit Testing
Using protocols as first class types