Use one macro to do the work