   checkSave();
 }
 
+
+void setAt(byte x, byte y, CRGB color) {
+  if (STAGGERED) {
+    
+  } else {
+    if (x + y * width < NUM_LEDS) {
+      leds[x + y * width] = color;
+    }
+  }
+}
+void fillRow(byte row, CRGB color) {
+  if (STAGGERED) {
+    byte start = row * width / 2;
+    byte num = width / 2;
+    if (row % 2) {
+      start += 1;
+    } else {
+      num += 1;
+    }
+    if (start + num > NUM_LEDS) {
+      Serial.print("DANGER: ");
+      Serial.print(row);
+      Serial.print(',');
+      Serial.print(start);
+      Serial.print(',');
+      Serial.println(num);
+      return;
+    }
+    fill_solid(leds + start, num, color);
+  } else {
+    for (byte j = 0; j < width; j++) {
+      if (row * width + j < NUM_LEDS) {
+        leds[row * width + j] = color; 
+      }
+    }
+  }
+}
+void fillCol(byte col, CRGB color) {
+  if (STAGGERED) {
+    for (byte i = col / 2 + (col % 2) * (BASE_WIDTH + 1);
+         i < NUM_LEDS; i += width) {
+      leds[i] = color;
+    }
+  } else {
+    for (byte j = col; j < NUM_LEDS; j+= width) {
+      leds[j] = color;
+    }
+  }
+}
+
 void sendSeparately(byte* buf, int len) {
   // Flush any existing sending,
   Serial.flush();

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

void runMovement(bool initialize) {

    } else {
      if (question == 'D') {
        // Send dimensions.
        byte dims[] = { '!', 'D', width, height, NUM_LEDS };
        sendSeparately(dims, sizeof(dims));
      }
    }
