client functionality complete