public function _sendTx(Transaction $tx, array $signInfo, $apiCheckFee = true) {
        if ($this->locked) {
            throw new \Exception("Wallet needs to be unlocked to pay");
        }

        assert(Util::all(function ($signInfo) {
            return $signInfo instanceof SignInfo;
        }, $signInfo), '$signInfo should be SignInfo[]');

        // sign the transaction with our keys
        $signed = $this->signTransaction($tx, $signInfo);

        $txs = [
            'signed_transaction' => $signed->getHex(),
            'base_transaction' => $signed->getBaseSerialization()->getHex(),
        ];

        // send the transaction
        return $this->sendTransaction($txs, array_map(function (SignInfo $r) {
            return (string)$r->path;
        }, $signInfo), $apiCheckFee);
    }