   }
 }
 
-void draw_idle_gauges() {
-
-  //todo only draw this the first time we enter idle mode
-  if(true) {
+void start_idle_mode() {
     lcd.clear();
+
+    //left column of labels
     lcd.setCursor(0, 0);
-    lcd.print(engine_rpm.shortLabel);
+    lcd.print(idleGauges[0]->shortLabel);
     lcd.setCursor(0, 1);
-    lcd.print(engine_map.shortLabel);
+    lcd.print(idleGauges[1]->shortLabel);
     lcd.setCursor(0, 2);
-    lcd.print(engine_afr.shortLabel);
+    lcd.print(idleGauges[2]->shortLabel);
     lcd.setCursor(0, 3);
-    lcd.print(engine_bat.shortLabel);
-
+    lcd.print(idleGauges[3]->shortLabel);
+
+    //draw dividing line
     lcd.setCursor(9, 0);
     lcd.write(byte(4));
     lcd.setCursor(9, 1);

const int SPI_CS_PIN = 10;

EngineVariable* idleGauges[8];

MCP_CAN CAN(SPI_CS_PIN); 


  lcd.createChar(4, fill5);

  idleGauges[0] = &engine_rpm;
  idleGauges[1] = &engine_map;
  idleGauges[2] = &engine_afr;
  idleGauges[3] = &engine_adv;
  idleGauges[4] = &engine_clt;
  idleGauges[5] = &engine_iat;
  idleGauges[6] = &engine_pw1;
  idleGauges[7] = &engine_bat;
  
  lcd.begin(20, 4);
  //lcd.print(engine_rpm.shortLabel);
  //lcd.setCursor(0, 2);
  //lcd.print(engine_afr.shortLabel);

  Serial.begin(115200);
  while (CAN_OK != CAN.begin(CAN_500KBPS))              // init can bus : baudrate = 500k
