Type classes have been a blocker between me and getting a further understanding of the beauty of Functional Programming in Scala. Materials covering the matter tend to be mixed with a complex business problem or more likely some parser or JSON converter. I tried to strip all that away and create a step by step tutorial on how type classes work. I start with a TL;DR for both the inpatient and my future self. I would encourage you to go through the following sections where I go over the motivation for having type classes and how we tidy our way into a cleaner implementation. I left the theory and housekeeping until the end. You can go through the resources for more complex examples on the topic.