server contract, plus two skeleton impls