more typeclass-fu, and context bounds