The reason why I duplicated the trait names is because with the new treatment of `@` pointers and the fact that `Path` just takes `&'a str`, it throws a bunch of lifetime errors. I tried to workaround this with no luck. if you've a better recommendation, I'd be very happy to use it.

Either way, I'd really like to move this patch forward, it's blocking the work on opt-in traits now.