refactor part 2/2

@bellycard/infrastructure 
More refactor.  More tests.
maybe that has to be a tag on the service then, not part of the name.  I'm avoiding at all costs any encoding magic (such as string creation in a specific order, etc) that happens in more than one place.