 	flopToFlip = true;
 }
 
-//TODO: this isn't safe when either parameter is close to either end of the strip
-void shift(int to, int from) {
-	if (to < from) {
-		for (int i = to; i < from; i++) {
-			strip[i] = strip[i + 1];
-		}
-	} else {
-		for (int i = to; i > from; i--) {
-			strip[i] = strip[i - 1];
-		}
-	}
-}
-
-//Unused
-struct Painter {
-	byte r;
-	byte g;
-	byte b;
-};

//		strip[i] = CRGB::Black;
//	}
//	FastLED.show();
//	delay(200);

	halfTopBottom(true, 25, CRGB::Amethyst, CRGB::DarkRed);
	for (int i = 0; i < NUM_LED; i++) {
		shift(true);
		FastLED.show();
		Serial.println("Did done it");
	}
	delay(100);
	halfTopBottom(true, 25, CRGB::SpringGreen, CRGB::LightSalmon);
	for (int i = 0; i < NUM_LED; i++) {
		shift(false);
	}

//	halfTopBottom(true, 30, CRGB::DarkRed, CRGB::Amethyst);
//	delay(100);
//	fill_solid( &(leds[i]), NUM_LED , CRGB::Black);
//	delay(100);

//	colorCounter = 0;
//	wipeRainbow(25);
//	while (delMe < 750) {
//		rainbowShift(10, false, colorCounter);
//		delMe++;
//	}
//
//	colorCounter = random8();
//	chasingInfinity(true, 10);
//	chasingInfinity(true, 20);
//	chasingFromSides(false, 45);
//	chasingInfinity(true, 50);
//	chasingFromSides(false, 30);
//	chasingInfinity(false, 10);
//	chasingInfinity(false, 20);
//	chasingInfinity(false, 50);
//	doubleSymmetricalFlipFlow(30);
//	chasingFromSides(false, 30);
//	doubleSymmetricalFlipFlow(15);
//	chasingFromSides(false, 30);
//	doubleSymmetricalFlipFlow(15);
//	doubleSymmetricalFlipFlow(30);
//	doubleSymmetricalFlipFlow(30);
//	doubleSymmetricalFlipFlow(15);
}

void wipeRainbow(int delayTime) {

}

//TODO: Impletment fadeValue
void meteorChaser(bool animate, uint8_t tailLength, uint16_t meteorBodyPixel, uint16_t fadeValue, bool rainbowTail) {
	uint16_t i;
	int meteorHue = random8();
	int fadeSpectrum = fadeValue;
	int fadeIncrement = (256 - fadeValue) / tailLength;
	for (i = meteorBodyPixel; i > (meteorBodyPixel - tailLength); i--) {
		strip[i].setHue(meteorHue);
		strip[i].fadeLightBy(fadeSpectrum);
		if (animate == true) {
			FastLED.show();
			delay(20);
		}
		fadeSpectrum += fadeIncrement;
	}
	//Do an optional rainbow tail? Just use rainbow fill on the tail section instead.
}

//Check out the memmove function to maybe do it more quickly
void shift(bool changeDirection) {
	CRGB wrapAroundPixel;
	if (changeDirection == true) {
		wrapAroundPixel = strip[NUM_LED - 1];
		for (int i = NUM_LED - 1; i > 0; i--) {
			strip[i] = strip[i - 1];
		}
		strip[0] = wrapAroundPixel;
