I'm ok with it as a class as well. I just don't see any value in it being a case class. Would you actually use unapply or equals with CachingJSONR?