new protocol implementation