          //Display current position
          lcd.clear();
          lcd.setCursor(0,0);
-         lcd.print("    Current");
+         lcd.print(F("    Current"));
          lcd.setCursor(0,1);
-         lcd.print("    Waypoint");
+         lcd.print(F("    Waypoint"));
          
          lcd2.clear();
          lcd2.setCursor(0,0);
-         lcd2.print("--- Waypoint :");
+         lcd2.print(F("--- Waypoint :"));
          lcd2.print(mCurrentWayPoint);
          lcd2.setCursor(17,0);
-         lcd2.print("---");
+         lcd2.print(F("---"));
          lcd2.setCursor(0,1);
-         lcd2.print(" LAT: ");
+         lcd2.print(F(" LAT: "));
          lcd2.print(mLat[mCurrentWayPoint], 8);
          lcd2.setCursor(0,2);
-         lcd2.print(" LON: ");
+         lcd2.print(F(" LON: "));
          lcd2.print(mLon[mCurrentWayPoint], 8);
          lcd2.setCursor(0,3);
-         lcd2.print("--------------------");
+         lcd2.print(F("--------------------"));
          delay(5000);
        break;
        case CMD_NAVIGATE:
          lcd.clear();
          lcd.setCursor(0,0);
-         lcd.print("<   Navigating ");
+         lcd.print(F("<   Navigating "));
          lcd.setCursor(0,1);
-         lcd.print("<   Waypoints ");
+         lcd.print(F("<   Waypoints "));
          
          lcd2.clear();
          lcd2.setCursor(0,0);
-         lcd2.print("--- Waypoint: ");
+         lcd2.print(F("--- Waypoint: "));
          lcd2.print(mCurrentWayPoint);
          lcd2.setCursor(16,0);
-         lcd2.print(" ---");
+         lcd2.print(F(" ---"));
          lcd2.setCursor(0,1);
-         lcd2.print("MAG:");
+         lcd2.print(F("MAG:"));
          lcd2.print(compassHeading);
          
          heading = getHeading(mCurrentWayPoint, flat, flon);  

              case CMD_DELETE_WAY_POINT:
         lcd.clear();
         lcd.setCursor(0,0);
         lcd.print("    Deleting ");
                  lcd.setCursor(0,1);
         lcd.print("    Waypoint ");

         lcd2.clear();
         lcd2.setCursor(0,0);
         lcd2.print("----- Deleting -----");
         lcd2.setCursor(0,1);
         lcd2.print(" LAT: ");
         lcd2.print(mLat[mCurrentWayPoint], 8);
         lcd2.setCursor(0,2);
         lcd2.print(" LON: ");
         lcd2.print(mLon[mCurrentWayPoint], 8);
         lcd2.setCursor(0,3);
         lcd2.print("--- Waypoint :");
         lcd2.print(mCurrentWayPoint);
         lcd2.setCursor(17,3);
         lcd2.print("---");
         mLat[mCurrentWayPoint] = 0.0;
         mLon[mCurrentWayPoint] = 0.0;
         delay(5000);

  void displayMenu(){
      lcd.clear();
      lcd.setCursor ( 0, 0 );            // go to the top left corner
      lcd.print(F("<  Navigation  >")); // write this string on the top row
      lcd.setCursor ( 0, 1 );            // go to the 2nd row
      lcd.print(F("<     Setup    >"));

      }
  
  void display2Menu(){
      lcd2.clear();
      lcd2.setCursor(0,0);
      lcd2.print(F("Current Waypoint:"));
      lcd2.print(mCurrentWayPoint);
      
      lcd2.setCursor(0,1);
      lcd2.print(F("   --------------"));
      lcd2.setCursor(3,2);
      lcd2.print(F("I"));
      lcd2.setCursor(6,2);
      lcd2.print(mMenu[mMenuPosition]);
      lcd2.setCursor(16,2);
      lcd2.print(F("I"));
      lcd2.setCursor(0,3);
      lcd2.print(F("   --------------"));
  }
  void executeCommand(int cmd){
    float heading;
