I'm counting on the compiler to do this
initialize it was to keep indentation low, but as the inner is now a macro I could make it nested