To follow a complete typesafe approach, leaf level values should **NOT** be converted to primitive types. but instead, to [value classes](https://docs.scala-lang.org/overviews/core/value-classes.html) e.g. ```json { "id": 2, "name": "Steve Nash", "score": 4.23 } ``` should be ```scala case class R00tJsonObject(id: Id, name: Name, score: Score) case class Id (value: Int) extends AnyVal case class Name(value: String) extends AnyVal case class Score(value: Double) extends AnyVal ```