Allow sharedRouter to be subclassed properly

Using UPRouter instead of self doesn't allow subclasses to use the sharedRouter method.