restructure to match how Service does this rather than Hostname
re-order classes
simplify subclass docstring