added all client functionality