Refactor: Less ugly, less broken and less painful. Cost: -40 lines.
I'm very pleased with this tradeoff. This refactor has been needed for
a long time. This should not only make services easier to write, but
should allow me to split out services into service modules now, which
has been a goal for awhile that this whole refactor needed to happen to
really do. Now we can just pass the socket structure to the modularized
services and for the most part most services will be able to do most of
what they need to do. There's going to still need to be some magic I
fear, but less.
Though given how simple things are, splitting these things out into
modules may not even be as necessary anymore.