     int packet_len = gen_Data();
     rf69.send((uint8_t*)data, packet_len, rfm_power);
     
-    if(battV > slow_freq_threshold) {
-      data_interval = random(15, 20) + count;
-      if(battV > repeat_threshold && zombie_mode==1) {
+    data_interval = random(10, 15) + count;
+    #ifdef ENABLE_ZOMBIE_MODE
+    if(battV > ZOMBIE_THRESHOLD && zombie_mode==1) {
         rf69.setMode(RFM69_MODE_RX);
         zombie_mode=0;
-      } else if (battV < repeat_threshold && zombie_mode==0) {
+    } else if (battV < ZOMBIE_THRESHOLD && zombie_mode==0) {
         rf69.setMode(RFM69_MODE_SLEEP);
         zombie_mode=1;
-      }
     }
-    else {
-      data_interval = random(25, 30) + count;
-    }
+    #endif
   }
 }
 
+#ifdef ENABLE_RFM_TEMPERATURE
+int8_t sampleRfmTemp() {
+    int8_t rfmTemp = rf69.readTemp();
+    while(rfmTemp>100) {
+        rfmTemp = rf69.readTemp();
+    }
+    if(zombie_mode==0) {
+        rfmTemp-=RX_TEMP_FUDGE;
+    }
+    return rfmTemp;
+}
+#endif
+
+#ifdef ENABLE_BATTV_SENSOR
 float sampleBattv() {
   // External 4:1 Divider
-  return ((float)analogRead(batt_pin)*1.1*4)/1023.0;
+  return ((float)analogRead(BATTV_PIN)*1.1*4*BATTV_FUDGE)/1023.0;
 }
+#endif

      }
    }
  } else {
    // Sleep for 8 seconds
    rf69.setMode(RFM69_MODE_SLEEP);
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

  count++;
  if(zombie_mode==0) {
    rf69.setMode(RFM69_MODE_RX);
    for(int i=0;i<64;i++) {
      LowPower.powerDown(SLEEP_120MS, ADC_OFF, BOD_OFF);
      if(rf69.checkRx()) {
        uint8_t buf[64];
        uint8_t len = sizeof(buf);
