finished client still need testing