I think user-defined commands and functions should be able to be defined multiple times with a different number of arguments. Then when a function is called, it will choose the function based on the number of arguments supplied. This will allow some manual implementations of default parameter values, as well.