client finish basic function