That's a fine compromise to avoid duplication.  Strategically may be good to circle back and question why `cleanupUrl` is available via inheritance to Services rather than part of a utility API.  Questionable whether Services should be responsible for applying Web-specific considerations to clean up their identifiers or whether this Web-specific cleanup consideration should be happening in the Extractor, which is responsible for Web-specific stuff.

Anyway.  @mmoayyed , you want to run with moving the `cleanupUrl()` invocation into the `Default...Service` constructor, or you want me to nail that?