adding networking and client implementation