How to use Elixir protocols
Using Protocols to decouple implementation details https://www.jackmarchant.com/articles/using-protocols-to-decouple-implementation-details
Read next What is NervesHub? Meet the Elixir OTA Firmware Update Server for IoT Devices