A journey into the world of typeclasses, the Cats library, and the functional way of doing things in Scala