experimental macro support

In principle yes, I am not sure why the original code isn't doing that....

My question is why use string comparison instead of symbols?