Not sure why this has to be a macro vs normal function