overhaul client/server communication