shows just how long ago in my Scala career I started this project...
conversion to implicit class
last hurdle, contravariance...