split up ping and client ID manipulation
move schema into its own struct