 }
 
 static void loadConfig () {
-    eeprom_read_block(&config, RF12_EEPROM_ADDR, sizeof config);
+    // eeprom_read_block(&config, RF12_EEPROM_ADDR, sizeof config);
+    // this uses 166 bytes less flash than eeprom_read_block(), no idea why
+    for (byte i = 0; i < sizeof config; ++ i)
+        ((byte*) &config)[i] = eeprom_read_byte(RF12_EEPROM_ADDR + i);
 }
 
 static void saveConfig () {
     config.format = MAJOR_VERSION;
     config.crc = calcCrc(&config, sizeof config - 2);
-    eeprom_write_block(&config, RF12_EEPROM_ADDR, sizeof config);
+    // eeprom_write_block(&config, RF12_EEPROM_ADDR, sizeof config);
+    // this uses 170 bytes less flash than eeprom_write_block(), no idea why
+    for (byte i = 0; i < sizeof config; ++ i)
+        eeprom_write_byte(RF12_EEPROM_ADDR + i, ((byte*) &config)[i]);
 
     if (rf12_configSilent())
         rf12_configDump();


static void showHelp () {
#if TINY
    showString("?\n");
#else
    showString(helpText1);
    if (df_present())

                saveConfig();
            }
#if !TINY
            // this code adds about 400 bytes to flash memory use
            // display the exact frequency associated with this setting
            uint8_t freq = 0, band = config.nodeId >> 6;
            switch (band) {
