handle optional parameters