generic macros from shapeless (2.11 style)