Add external services v2 support.
Address comments.
Merge pull request #2319 from brendandburns/external

Externalized services v2