Use a URI internally instead of a URI string.
Allow setting user-data, and specifying a URI policy callback.