third argument now allows passing in optional parameters