Outstanding work Look at reducePath algorithm with regards to relative URIs Consider performance using sprintf Add IPv6 addresses Add mailto URI Make withScheme method part of an interface.