Partial work on an experimental client structure. It doesn't give circular dependency errors anymore - at least.
Another partial commit.
Rewrite done. A few dynamic uglynesses remain to be cleaned up, but
the client is working as intended.