I think the pattern is: when you want an implicit Gen, you take an implicit Arbitrary, and then call .arbitrary on it to get the Gen (kind of confusing, but that is the pattern I think):

https://github.com/rickynils/scalacheck/blob/master/src/main/scala/org/scalacheck/Arbitrary.scala