Migrated to using type-family-based superclass constraints to provide a proof obligation for instances. This means that any time we use the class, we don't have to replicate the proof constraint in the type signature.