implemented for macro