           lcd.print(' '); // fill with spaces
           displaybuff[x][y] = ' ';
           x++;
-        }    
-      } else {
+        }   
+      } else if (c == 0x0A) {
+       // do nothing 
+       return;
+      } else if (c == 0x08) {
+       if (x > 0) x--;
+         else {
+           x = COLS - 1;
+          if (y > 0) y--;
+          else y = ROWS - 1; 
+         }
+         lcd.setCursor(x, y);
+         displaybuff[x][y] = ' ';
+         lcd.print(' ');
+         lcd.setCursor(x, y);
+         return;
+      }
+      else {
         lcd.print((char)c);
         displaybuff[x][y] = c;
       } 

  } else {
    setBaud(getBaud());
  }

  // set up the LCD's number of rows and columns: 
  lcd.begin(COLS, ROWS);
  
  pinMode(CONTRASTPIN, OUTPUT);
  pinMode(REDLITE, OUTPUT);
  pinMode(GREENLITE, OUTPUT);
  pinMode(BLUELITE, OUTPUT);

/*** test ****/
  setBacklight(255, 0, 0);
  delay(250);
  setBacklight(0, 255, 0);
  delay(250);
  setBacklight(0, 0, 255);
  delay(250);  
  setBacklight(255, 255, 255);
  setContrast(0x50);
  EEPROM.write(SPLASH_ADDR, 0xFF);
  setBaud(9600);

  lcd.clear();
  lcd.home();
  lcd.print(getBaud());
  lcd.print(" baud");
  delay(1000);
/*** test ****/
  

#ifdef USBLCDDEBUG
  // print to USB only
  Serial.print(F("free mem = ")); Serial.println(freeMemory());
#endif

  setContrast(getContrast());
  
  // do splash screen
  displayOn();
  if (EEPROM.read(SPLASH_ADDR) == 0xFF) { 
    lcd.setCursor(0,0);
    lcd.print("USB/Serial LCD");
    lcd.setCursor(0,1);
    lcd.print("Adafruit.com");
  } else {
     for (uint8_t i=0; i < ROWS; i++) {
       lcd.setCursor(0,i);

    
  uint8_t brightness = EEPROM.read(BACKLIGHT_BRIGHTNESS_ADDR);
  // normalize the red LED
  r = map(r, 0, 255, 0, 100);
  b = map(b, 0, 255, 0, 190);

  r = map(r, 0, 255, 0, brightness);
  g = map(g, 0, 255, 0, brightness);
  b = map(b, 0, 255, 0, brightness);

  analogWrite(REDLITE, r);
  analogWrite(GREENLITE, g);
