try whether you can do shapeless 2.0 records with type sets. You can

incredibly messy code, but it works.