add optargs function