more progress on client side