cleanup prototypes by doing macros