 { 
     uint32_t timer_cal;
     color_t col;
-    uint8_t i;
+    uint8_t i, valid_program;
+
+    // Tell the bootloader that we ran, if we haven't before.
+    EEPROM.get(ee_have_valid_program_offset, valid_program);
+    if (!valid_program)
+        EEPROM.write(ee_have_valid_program_offset, 1);
 
     Serial.begin(38400);
-    Serial.println("hue-chandelier board!\n");
+    Serial.println("hippie-trap led board!\n");
 
     g_pixels.begin();
     startup_animation();
         
-    g_node_id = EEPROM.read(id_address);
-
-    EEPROM.get(calibration_address, timer_cal);
+    g_node_id = EEPROM.read(ee_id_offset);
+
+    EEPROM.get(ee_calibration_offset, timer_cal);
     if (timer_cal > 1 && timer_cal != 0xFFFF)
     {
         g_ticks_per_sec = timer_cal;


             g_ticks_per_sec = (done - g_calibrate_start) / g_calibrate;
             g_ticks_per_frame = g_ticks_per_sec * g_delay / 1000;
             EEPROM.put(calibration_address, g_ticks_per_sec);
             
             Serial.read();
                       

const uint8_t PACKET_CALIBRATE    = 14;
const uint8_t PACKET_BRIGHTNESS   = 15;
const uint8_t PACKET_ANGLE        = 16;
const uint8_t PACKET_BOOTLOADER   = 17;

// where in EEPROM our node id is stored. The first 16 are reserved for the bootloader
// Bootloader items
const uint8_t ee_start_program_offset       = 0;
const uint8_t ee_have_valid_program_offset  = 1;
const uint8_t ee_program_version_offset     = 2;

// Node items
const uint8_t ee_id_offset                  = 16;
const uint8_t ee_calibration_offset         = 17;

// ----- globals ------------
uint8_t    g_error = ERR_OK;
