What are Protocols and How to Use Them?