Macroify some boilerplate