rudimentary client + server stuff