added server, client, and unit tests