   }    
     if (rf12_crc == 0) {
       activityLed(1);
+
+    if ((rf12_hdr & RF12_HDR_MASK) != 31) {
+      if (nodes[(rf12_hdr & RF12_HDR_MASK)] == 0xFF) {  // Extend mask to fix
+        byte len = 32;
+        Serial.print("New Node ");                      // Fix me, if THIS node and code (non node 1) receives an ACK targetted at itself a new node is created
+        Serial.println(rf12_hdr & RF12_HDR_MASK);
+        nodes[(rf12_hdr & RF12_HDR_MASK)] = 0;
+        if (rf12_len < 33) 
+          len = rf12_len;
+
+        for (byte i = 0; i < len; ++i) {  // variable n
+          eeprom_write_byte(RF12_EEPROM_ADDR + ((rf12_hdr & RF12_HDR_MASK)*32) + i, rf12_data[i]);
+        }
+      }
+    }
+
 #if not defined(__AVR_ATtiny84__) || not defined(__AVR_ATtiny44__)    
       if (df_present())
         df_append((const char*) rf12_data - 2, rf12_len + 2);
 #endif
       if (RF12_WANTS_ACK && (config.nodeId & COLLECT) == 0) {
-        Serial.print(" -> ack ");
+        Serial.print(" -> ack");
         testCounter = 0;
         if ((rf12_hdr & RF12_HDR_MASK) == 31) {          // Special Node 31?
           for (byte i = 1; i < 31; i++) {
             if (nodes[i] == 0xFF) {            
-              testbuf[0] = i + 0xE0;  // Change Node number request
+              testbuf[0] = i + 0xE0;  // Change Node number request matched in RF12Tune3
               testCounter = 1;
+              Serial.print("Node allocation ");
               showByte(testbuf[0]);
               break;
             }

        showHelp();
        break;
      case 'i': // set node id
        if ((value > 0) & (value < 32)) {
           config.nodeId = (config.nodeId & 0xE0) + (value & 0x1F);
           saveConfig();
        } else {

        }
        else {
          if (nodes[rf12_hdr & RF12_HDR_MASK] != 0) {
            testbuf[0] = nodes[rf12_hdr & RF12_HDR_MASK];   // Pick up posted value
            nodes[(rf12_hdr & RF12_HDR_MASK)] = 0;           // Assume it will be delivered.
            testCounter = 1;
            Serial.print("Posted ");
            showByte(rf12_hdr & RF12_HDR_MASK);
            Serial.print(",");
            showByte(testbuf[0]);
            nodes[1]++;                                    // Count
          }
        }
