client change to multi-thread