But when I look, can you make the case for this over:
```scala
optional("count").map { _.toInt }
```
Which, granted, it 4 characters longer, but has the advantage of fewer moving parts (and keeping the simplicity that args are always strings).

Also, we could do:
```scala
// we are generally inverting cases where there is an injection from A into String (Int => String, Long => String, etc...)
def optional[A](key: String)(implicit inj: Injection[A, String]): Option[A] = optional(key).flatMap { inj.invert(_) }
```
Then we could simply do: `optional[Int]("count")` and it would work.  For required we could do:
```scala
// we are generally inverting cases where there is an injection from A into String (Int => String, Long => String, etc...)
def required[A](key: String)(implicit inj: Injection[A, String]): A = inj.invert(required(key)).get
```