Client now has a poll method (non-blocking) instead of calling run (blocking) in a separate thread. It's cleaner in memory management terms.