An important item that may be overlooked is that using dodefault() effectively breaks pcount(). I've resorted to using a do case to test pcount() before calling the dodefault() in the one or two methods where I know that the parameter count is important.