add named parameter support (replace with positional internally)