support optional params to functions

maybe instead of 'first' here, just check if `!method.args.isEmpty`?