handle optional function arguments