 }
 
 // Unsigned allows us to modulo to correct value on overflow
-unsigned char mode = WIPE;
+unsigned char mode = BUMP;
 void loop() {
-  char button = read_buttons();
+  char button;
+
+  // TODO: Account for processing time in delay
+  for (int i = 0; i < 50; i++) {
+    button = read_buttons();
+    delay(10);
+  }
 
   switch (mode)
   {
     case RAW_WIPE:
-      raw_wipe();
+      animation_raw_wipe();
       break;
       
     case WIPE:
-      wipe();
+      animation_wipe();
+      break;
+
+    case BUMP:
+      animation_bump();
       break;
 
     // Outside range, correct it

  }
  
  print_framebuffer(s);

  delay(10);
  
  if (button == B1)
    mode++;

  return val;
}

inline void animation_wipe() {
  static uint64_t i = 0;
  
  i = i == 0 ? 1 : i << 1;
