client almost done, TODO server