 }
 
 void drawReadLocation() {
-  char datetime[24];
-  char status[24];
-
-  sprintf(datetime, "%d-%02d-%02d    %02d:%02d:%02d", year(), month(), day(), hourFormat12(), minute(), second());
-  sprintf(status, "%2d satellites", gps.satellites.value());
-
-  oled.setFont(ucg_font_7x13Br);
-
-  oled.setColor(0, 0, 255);
-  oled.drawRFrame(0, 0, oled.getWidth(), 20, 3);
-
-
+  // Distance as a formated string
+  char _distanceTo[14];
+  sprintf(_distanceTo, "%.2f mi\0", distanceTo);
+
+  // Debug info formatted
+  char _debug[21];
+  sprintf(_debug, "hdop: %d WP: %d/%d", gps.hdop.value(), (waypoint_index + 1), arraySize(waypoint));
+
+  oled.setFont(ucg_font_9x15Br);
+  oled.setColor(0, 255, 0);
+
+  oled.setPrintPos(0, oled.getHeight() / 2);
+  oled.printf(F("%-14s"), _distanceTo);
+
+  oled.setPrintPos(0, (oled.getHeight() / 2) + (oled.getFontAscent() - oled.getFontDescent()));
+  oled.printf(F("%-14s"), TinyGPSPlus::cardinal(course));
+
+  oled.setFont(ucg_font_6x12r);
   oled.setColor(255, 255, 255);
-  oled.setPrintPos(5, 15);
-  oled << F("Directions");
-
-  oled.setFont(ucg_font_fixed_v0r);
-
-  oled.setColor(255, 255, 255);
-  oled.setPrintPos(0, 22);
-  oled << datetime;
-
-  oled.setFont(ucg_font_7x13Br);
-  oled.setColor(0, 255, 0);
-
-  oled.setPrintPos(0, oled.getHeight() / 2);
-  oled << distanceTo << F(" miles");
-
-  oled.setPrintPos(0, (oled.getHeight() / 2) + (oled.getFontAscent() - oled.getFontDescent()));
-  oled << TinyGPSPlus::cardinal(course);
-
-  oled.setFont(ucg_font_fixed_v0r);
-  oled.setColor(255, 255, 255);
 
   oled.setPrintPos(0, oled.getHeight() + oled.getFontDescent());
-  oled << status;
-
-  oled.setPrintPos(0, oled.getHeight() + (oled.getFontDescent() + 12));
-  oled << F("hdop: ") << gps.hdop.value() << F(" WP: ") << (waypoint_index + 1) << '/' << arraySize(waypoint) << "    ";
+  oled.printf(F("%d satellites  "), gps.satellites.value());
+
+  // Debug info
+  oled.setPrintPos(0, (oled.getHeight() + oled.getFontDescent()) - 12);
+  oled.printf(F("%-21s"), _debug);
 }
 
 void setup() {

  button.holdHandler(onHold, 5000);

  TimedEvent.addTimer(GET_FIX_TIMER, 5000, gpsFailure);
  TimedEvent.addTimer(READ_LOCATION_TIMER, 60000, initiateSleep);

  Serial3.begin(9600);
  delay(1000);

void loop() {
  while(Serial3.available()) gps << Serial3.read();
  TimedEvent.loop();
  button.process();
  stateMachine.update();
}
