Use struct to support optional parameters in for condidtion