reworked macros to be nicer (sort of)