first pass at a simple client