Split macro implementation and macro invocation