first pass at working client