 		PARTY_WORDS,
 		FILL_LINES,
 		CIRCLES,
+		L_SYSTEM,
 		TOTAL
 };
 
 //TODO: Re-enable "verify code" in Arduino IDE
 
-Scene currentScene = CIRCLES;
+Scene currentScene = L_SYSTEM;
 Scene lastScene = -1;
 TVout TV;
 unsigned long startTime = 0;

				case CIRCLES:
						circlesScene(changed);
						break;
				default:
						TV.print("Invalid scene. ");
						TV.delay(1000);

		checkSceneEnded(15);
}

int startLen = 40;
int branches = 3;
double branchAngle = 30.0;
double angleOffset = 0.0;
int rouletteDenominator = 1;
int treeXOffset = 0;

void lSystemRecursive(int x, int y, double angle, int len) {
		if (len < 1) {
				return;
		}

		drawLineAngle(x, y, angle, len);
		int endX, endY;
		toCartesian(x, y, angle, len, &endX, &endY);

		double startAngle = angle + ((branchAngle * (branches - 1)) / 2.0) + angleOffset;
		for (int i = 0; i < branches; i++) {
				double a = startAngle - (i * branchAngle);
				if (random(rouletteDenominator) != 0) {
						lSystemRecursive(endX, endY, a, len / 2);
				}
		}
}

void drawLSystem() {
		startLen = random(30, 50);
		branches = random(3, 5);
		branchAngle = random(25, 40);
		angleOffset = -10 + random(20);
		rouletteDenominator = random(3, 5);
		treeXOffset = -20 + random(40);
		lSystemRecursive(treeXOffset + (WIDTH / 2), HEIGHT - 1, 90.0 + angleOffset, startLen);
} 

void lSystemScene() {
		drawLSystem();
		TV.delay(200);
		TV.clear_screen();

		checkSceneEnded(20);
}

void loop() {
		bool changed = false;
		if (currentScene != lastScene) {
