almost done w/ client implementation