diff --git a/build/meshtastic.js b/build/meshtastic.js
index 923990be9dda8c8e80c34fbd37177152fcdeb02f..efe6c92aabbdf2251f822ccbc13ad5b1385ca7a3 100644
--- a/build/meshtastic.js
+++ b/build/meshtastic.js
@@ -16188,6 +16188,7 @@
         _this.myNodeInfo = new mesh_pb_exports.MyNodeInfo();
         _this.deviceMetadata = new mesh_pb_exports.DeviceMetadata();
         _this.channels = [];
+        _this.nodeInfo = {};
         _this.ackHandlers = {};
         _this.responseHandlers = {};
         _this.purgeEvent = js.setInterval(_this.purgeHandlers, _this.timeoutMs, _this);
@@ -16306,11 +16307,9 @@
               delete this.responseHandlers[id];
               handled = true;
             }
-          } else if (packet.payloadVariant["case"] === "encrypted") {
           }
-          if (!handled) {
+          if (!handled)
             this.emit("packet", packet);
-          }
         }
       }, {
         key: "handleFromRadio",
@@ -16344,10 +16343,13 @@
             case "logRecord":
               this.log(_LOG_LEVEL_MAP[fromRadio.payloadVariant.value.level], fromRadio.payloadVariant.value.message, fromRadio.payloadVariant.value.time, fromRadio.payloadVariant.value.source);
               break;
+            case "nodeInfo":
+              this.nodeInfo[fromRadio.payloadVariant.value.num] = fromRadio.payloadVariant.value;
+              this.emit("nodeInfo", fromRadio.payloadVariant.value);
+              break;
             case "config":
             case "moduleConfig":
             case "mqttClientProxyMessage":
-            case "nodeInfo":
             case "queueStatus":
             case "rebooted":
             case "xmodemPacket":
@@ -16423,53 +16425,15 @@
           var buffer = new Uint8Array([].concat(header, _toConsumableArray(data)));
           return this.sendToDevice(buffer);
         }
-        /**
-         * Assembles a [MeshPacket](https://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.MeshPacket) with an encrypted payload.
-         * To do:
-         * Currently you would have to encrypt 'payload' yourself prior to calling.
-         * Presumably we could use channel info read upon initialization to get psk (and alg?) and encrypt 'payload' within this method
-         */
-      }, {
-        key: "sendEncrypted",
-        value: function sendEncrypted(_ref) {
-          var payload = _ref.payload, _ref$to = _ref.to, to = _ref$to === void 0 ? _BROADCAST : _ref$to, _ref$channel = _ref.channel, channel = _ref$channel === void 0 ? 0 : _ref$channel, _ref$wantAck = _ref.wantAck, wantAck = _ref$wantAck === void 0 ? true : _ref$wantAck, _ref$hopLimit = _ref.hopLimit, hopLimit = _ref$hopLimit === void 0 ? 0 : _ref$hopLimit, _ref$priority = _ref.priority, priority = _ref$priority === void 0 ? mesh_pb_exports.MeshPacket_Priority.UNSET : _ref$priority, _ref$viaMqtt = _ref.viaMqtt, viaMqtt = _ref$viaMqtt === void 0 ? false : _ref$viaMqtt, ackHandler = _ref.ackHandler;
-          var id = getRandomId();
-          var meshPacket = new mesh_pb_exports.MeshPacket({
-            payloadVariant: {
-              "case": "encrypted",
-              value: payload
-            },
-            from: this.myNodeInfo.myNodeNum,
-            to: to,
-            id: id,
-            wantAck: ackHandler !== void 0 ? true : wantAck,
-            channel: channel,
-            hopLimit: hopLimit,
-            priority: priority,
-            viaMqtt: viaMqtt
-          });
-          var toRadio = new mesh_pb_exports.ToRadio({
-            payloadVariant: {
-              "case": "packet",
-              value: meshPacket
-            }
-          });
-          var ret = this.write(toRadio);
-          if (ret && ackHandler !== void 0) {
-            this.registerHandler(id, ackHandler, this.ackHandlers);
-          }
-          return ret;
-        }
         /** Assembles a [MeshPacket](https://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.MeshPacket) based on your parameters and writes it to the device. */
       }, {
         key: "sendPacket",
-        value: function sendPacket(_ref2) {
-          var payload = _ref2.payload, portNum = _ref2.portNum, _ref2$to = _ref2.to, to = _ref2$to === void 0 ? _BROADCAST : _ref2$to, _ref2$channel = _ref2.channel, channel = _ref2$channel === void 0 ? 0 : _ref2$channel, _ref2$wantAck = _ref2.wantAck, wantAck = _ref2$wantAck === void 0 ? true : _ref2$wantAck, _ref2$wantResponse = _ref2.wantResponse, wantResponse = _ref2$wantResponse === void 0 ? false : _ref2$wantResponse, source = _ref2.source, requestId = _ref2.requestId, replyId = _ref2.replyId, emoji = _ref2.emoji, _ref2$hopLimit = _ref2.hopLimit, hopLimit = _ref2$hopLimit === void 0 ? 0 : _ref2$hopLimit, _ref2$priority = _ref2.priority, priority = _ref2$priority === void 0 ? mesh_pb_exports.MeshPacket_Priority.UNSET : _ref2$priority, _ref2$viaMqtt = _ref2.viaMqtt, viaMqtt = _ref2$viaMqtt === void 0 ? false : _ref2$viaMqtt, ackHandler = _ref2.ackHandler, responseHandler = _ref2.responseHandler;
+        value: function sendPacket(_ref) {
+          var payload = _ref.payload, portNum = _ref.portNum, _ref$to = _ref.to, to = _ref$to === void 0 ? _BROADCAST : _ref$to, _ref$channel = _ref.channel, channel = _ref$channel === void 0 ? 0 : _ref$channel, _ref$wantAck = _ref.wantAck, wantAck = _ref$wantAck === void 0 ? true : _ref$wantAck, _ref$wantResponse = _ref.wantResponse, wantResponse = _ref$wantResponse === void 0 ? false : _ref$wantResponse, source = _ref.source, requestId = _ref.requestId, replyId = _ref.replyId, emoji = _ref.emoji, _ref$hopLimit = _ref.hopLimit, hopLimit = _ref$hopLimit === void 0 ? 0 : _ref$hopLimit, _ref$priority = _ref.priority, priority = _ref$priority === void 0 ? mesh_pb_exports.MeshPacket_Priority.UNSET : _ref$priority, _ref$viaMqtt = _ref.viaMqtt, viaMqtt = _ref$viaMqtt === void 0 ? false : _ref$viaMqtt, ackHandler = _ref.ackHandler, responseHandler = _ref.responseHandler;
           var id = getRandomId();
           var meshPacket = new mesh_pb_exports.MeshPacket({
             payloadVariant: {
               "case": "decoded",
-              // To do: what if I want to send encrypted, eh? What then eh buddy? Eh? Eh? Fucken fix it.
               value: {
                 payload: payload,
                 portnum: portNum,
@@ -16509,8 +16473,8 @@
         /** Send a text message out into the mesh, optionally specifying a 'to' node address, channel, want-acknowledgement, and acknowledgement handler */
       }, {
         key: "sendText",
-        value: function sendText(_ref3) {
-          var text = _ref3.text, _ref3$to = _ref3.to, to = _ref3$to === void 0 ? _BROADCAST : _ref3$to, _ref3$channel = _ref3.channel, channel = _ref3$channel === void 0 ? 0 : _ref3$channel, _ref3$wantAck = _ref3.wantAck, wantAck = _ref3$wantAck === void 0 ? true : _ref3$wantAck, ackHandler = _ref3.ackHandler, replyId = _ref3.replyId, hopLimit = _ref3.hopLimit;
+        value: function sendText(_ref2) {
+          var text = _ref2.text, _ref2$to = _ref2.to, to = _ref2$to === void 0 ? _BROADCAST : _ref2$to, _ref2$channel = _ref2.channel, channel = _ref2$channel === void 0 ? 0 : _ref2$channel, _ref2$wantAck = _ref2.wantAck, wantAck = _ref2$wantAck === void 0 ? true : _ref2$wantAck, ackHandler = _ref2.ackHandler, replyId = _ref2.replyId, hopLimit = _ref2.hopLimit;
           var enc = new TextEncoder();
           var payload = enc.encode(text);
           if (payload.length > _MAX_PAYLOAD)
@@ -16790,6 +16754,14 @@
           });
           this.write(toRadio);
         }
+        /** Return data about the given node number from our node DB, or undefined if we don't got none. */
+      }, {
+        key: "getNodeInfo",
+        value: function getNodeInfo(nodeNum) {
+          if (this.nodeInfo[nodeNum] !== void 0)
+            return this.nodeInfo[nodeNum];
+          return;
+        }
         /**
          * AdminMessage payloadVariant cases not implemented:
          *