Any view controller class can implement this protocol to add/remove views without writing any extra line of code. Multiple Inheritance Protocol extension allows us to retain one of the best features of subclassing(inheritance). Using protocols allows us to inherit from multiple parents simultaneously Not Limited to classes Protocols can be adopted by classes, enums or structs whereas base classes and inheritance are available for classes only. Conditional Extensions By using where keyword, we only extend protocol for types that inherit from UIViewController, we are able to use UIViewController specific methods.