better macro parameter parsing