no reason to have these as macros now that this is its own function