* Code influenced by the service module but without classes. * Thanks to @dhozac for input and review. * Thanks to @johanwiren for getting me to push this out the door.