generic macros from shapeless (2.10 style)