 int clockPin = 11;
 int dataPin = 12;
 
-unsigned long screenbuffer[2][7][2];
+unsigned long screenbuffer[2][7][5];
+
+long interval = 1000;           // interval at which to 'hop' (milliseconds)
+unsigned long previousMillis = 0;
+
+int incomingByte = 0;   // for incoming serial data
+int incomingPos = 0;
 
 byte activebuffer = 0;
 byte passivebuffer = 1;
-
-unsigned long lastmilli;
 
 void setup() {
  pinMode(latchPin, OUTPUT);

  printChar('l',25);
  printChar('e',30);  
  printChar('k',35);    
}

void loop() {
  updatescreen();
  updatebuffer();
}

void updatescreen() {
  // 7 rows
  for (int i=0 ; i < 7; i++) {

    // Update row.
    shiftOut(dataPin, clockPin, LSBFIRST, screenbuffer[activebuffer][i][1]);    
    shiftOut(dataPin, clockPin, LSBFIRST, screenbuffer[activebuffer][i][0]); 
    shiftOut(dataPin, clockPin, LSBFIRST, (screenbuffer[activebuffer][i][0] >> 8)); 
    shiftOut(dataPin, clockPin, LSBFIRST, (screenbuffer[activebuffer][i][0] >> 16));
    shiftOut(dataPin, clockPin, LSBFIRST, (screenbuffer[activebuffer][i][0] >> 24)); 
    
    // Turn off row.
    if (i == 0) {
      digitalWrite(19, 1);

  }
}

void printChar(char ch, byte charPos, byte bufferpointer)
{  
  // The display is 40 bits wide, the buffer only 32. Time to select the correct one.
  int bufferpos = 0;
  
  // make sure the character is within the alphabet bounds (defined by the font.h file)
  // if it's not, make it a blank character
