 void loop() {
     allOff();
 
-    lettersOnLeftToRight();
-    classicBackground();
-    delay(normal);
-
-    outsideInOnInsideOutOffBackground(random(2, 5), true);
-    delay(normal);
-
-	 insideOutOnOutsideInOffBackground(random(2, 5), false)
-	 delay(normal);
-
-	 racingOnLeftToRight();
-	 blinkBackground(random(5, 10));
-    delay(normal);
-
-    blinkLetters(random(5, 10));
-
-    lettersAllOff();
+	int possibility = random(0, 100);
+	if (possibility < 70) {
+	    lettersOnLeftToRight();
+	    classicBackground();
+	} else if (possibility < 95) {
+		// if new patterns are added, add a new case statement, and bump up the max random value by one
+        switch (random(0, 2)) {
+       	case 0: { lettersOnLeftToRight(); break; }
+		case 1: { blinkLetters(random(5, 10)); break; }
+		default: { break; }
+		}
+
+		switch(random(0, 4)) {
+		case 0: { classicBackground(); break; }
+		case 1: { insideOutOutsideInBackground(); break; }
+		case 2: { racingOnLeftToRightBackground(); break; }
+		case 3: { blinkBackground(random(5, 10)); backgroundAllOn(); break; }
+		}
+	} else {
+		// super rare things
+	}
+
+   	blinkLetters(random(3, 7));
+
+   	lettersAllOff();
 
     delay(ish);
 }


// )'(
// Scenes

void lettersAllOn() {
    log('lettersAllOn - START');

	 }
}

void insideOutOutsideInBackground() {
	outsideInOnInsideOutOffBackground(random(2, 5), true);
	delay(normal);

	insideOutOnOutsideInOffBackground(random(2, 5), false);
	delay(normal);
}

void racingOnLeftToRightBackground() {
	for (int x = 0; x < sizeof(background); x++) {
		for (int y = 0; y < sizeof(background) - x - 1; y++) {
			digitalWrite(background[y], PATTERN_ON);
