completed first pass at client