   FastLED.setBrightness(0);
   FastLED.show();
 
+  int logical_num_leds;
+  if (STAGGERED) {
+    // Because they're staggered, logical width is twice plus one.
+    // Every other pixel is imaginary.
+    width = BASE_WIDTH * 2 + 1;
+    // Need to multiply this so the height calculation works out.
+    logical_num_leds = NUM_LEDS * 2;
+  } else {
+    // Normal width is fine here.
+    width = BASE_WIDTH;
+    logical_num_leds = NUM_LEDS;
+  }
+  // Add extra row if there's a remainder.
+  height = logical_num_leds / width + (logical_num_leds % width ? 1 : 0);
+  /*Serial.print(width);
+  Serial.print('x');
+  Serial.println(height);*/
+
+
   // FIRST TIME ONLY: Write a valid eepromStart address
   //EEPROM.put(EEPROM_START_POINTER_ADDR, 0x2);
-
   // Initialize eepromStart: the address where we start writing our settings.
   EEPROM.get(EEPROM_START_POINTER_ADDR, eepromStart);
   // Initialize settings

  if (settings.mode == 'M') {
    runMovement(false);
  }
}

void runMovement(bool initialize) {

      color = CHSV(int(float(settings.hue) + distance * size) % 256, settings.saturation, 255);
    } else {
      byte value;
      float intensity = size / 2.0 - distance;
      float moveFadeDist = 0.5;
      if (intensity > moveFadeDist) {
        value = 255;
      } else if (intensity > -moveFadeDist) {
        value = 255.0 * (intensity + moveFadeDist);
      } else {
        value = 0;
      }
      color = CHSV(settings.hue, settings.saturation, value);
    }

    if (horizontal) {
      fillCol(i, color);    
    } else {
      fillRow(i, color);
    }
  }
  
