I am a big fanatic of Protocol Oriented Programming (POP). Hope every one of us might have read about it. Or never the less a bit fancier of the protocol-oriented design during design and implementation. You all might have read many articles around, How to use protocols? What is POP? i.e., hiding, abstraction, loose coupling, segregation, testability, etc. Hopefully, everyone of us might have used one of the below protocol now and then,