cleanup, tried a benchmark, but it didn't work
simplify
pass optional socket to new clients
reorg
get rid of Client type
better coverage
add topic pattern matching