leverage TypeSwitch instead of type asserting
share validateClientId
introduce TransClient
make Clients storage generic(ish)
trans connect and connack