variable argument list and optional parameters