Macro deprecated in 1.6 - some questions on Dial(|M())

Reading the upgrade notes for 1.4->1.6, the documentation simply says macros are deprecated so use Gosub() and the profoundly useful advice: ‘Heaven Help You if you wrote code depending on any aspect of this!’

I have several sites that rely on certain aspects of macros from the Dial() command, so was wondering if anybody had any insights to the following:

1/ What to now do about MACRO_RESULT with Dial(|M())?
2/ Macros could accept parameters, I haven’t seen anything about gosubs being able to, does this mean now one needs to use channel variables for subroutines? Best practice would mean that each gosub call should set a new channel variable specific for the gosub routine to ensure the original channel variable isn’t mutated in some way by code in the subroutine.
3/ Does the M() option in the Dial() application even still work? Anything special about the naming of the subroutine for this to work?

Any constructive advice on this would be appreciated.

Regards,

Michael