refactor for 0.1.0, getting client and server to be to completely different implementations