Factor services with base service.

Lots of code was duplicated on the derived classes, including user output messages.
Line is too long. [94/80]