Updating: tidying-up a bit
Updating: supporting %(...) in macro definitions