Protocol Oriented Programming. What is it? How does it work? And why is it so great? As of Swift 2.0, Apple introduced their new concept of protocol extensions, which has changed the face of iOS development. I will be going through an introduction to protocols in a pre Swift 2.0 era and how they have changed post Swift 2.0. I will also go through the more advanced features of Protocol Oriented Programming such as associated types and how protocols can be used in iOS unit testing. Then I will wrap it up with a game framework that I have built in a protocol oriented way.