TxnId is actually optional