Move passthrough service as part of service object

It's not a great OO design, but for now we keep passthrough
as a particular case of Service, and distinguish via "if's".
This helps to keep registration uniform.
A refactoring may be needed in the future.