cleanup
client ensures needed keys are in objs; server just checks them