pass third parameter to the macro, which is the entire data object