Multiple LED patterns independently

You're not the first to ask. That's why I wrote this sketch I call DaftPunkLights:

const int CheekPins[] = {
  3,4,5,6,7,8,9,8,7,6,5,4};  // gives forward and back
const int CHEEK_COUNT = sizeof CheekPins / sizeof (int);
const int CheekIntervals[] = 
{
  300, 300, 300, 300, 300, 300, 
  300, 300, 300, 300, 300, 300} 
;  // Milliseconds
unsigned long CheekTime = millis();
int CheekStep = 0;

const int ChinPins[] = {
  10,11,12,13};
const int CHIN_COUNT = sizeof ChinPins / sizeof (int);
const int ChinIntervals[] = {
  300, 300, 300, 300} 
;  // Milliseconds
unsigned long ChinTime = millis();
int ChinStep = 0;

void setup() 
{
  int i;
  /* Cheek LED's */
  for (i=0; i< CHEEK_COUNT; i++)
    pinMode(CheekPins[i], OUTPUT);  // Yes, it's OK to set the pinMode twice on some pins

  /* Chin LED's */
  for (i=0; i< CHIN_COUNT; i++)
    pinMode(ChinPins[i], OUTPUT);
}

void loop()
{
  // Do the cheek animation
  if ((millis() - CheekTime) > CheekIntervals[CheekStep])
  {
    CheekTime = millis();
    digitalWrite(CheekPins[CheekStep], LOW);
    CheekStep = (CheekStep+1) % CHEEK_COUNT;
    digitalWrite(CheekPins[CheekStep], HIGH);
  }

  // Do the chin animation
  if ((millis() - ChinTime) > ChinIntervals[ChinStep])
  {
    ChinTime = millis();
    digitalWrite(ChinPins[ChinStep], LOW);
    ChinStep = (ChinStep+1) % CHIN_COUNT;
    digitalWrite(ChinPins[ChinStep], HIGH);
  }
}