I may be missing a point, but cant you do something similar using named optional arguments? This is described in a documentation tutorial titled Setting up Functions with Optional Arguments. Just a thought.