server protocol implementation moved to server