only define behavior on server as it shouldn't be exposed to the client and also closes #1
refactor and move tests to client/server specific folders with a shared setup file
bump version