     previewColor = black
 ready:
   enter:
-    set animation to pulse single
+    Animation.setAnim(picker_pulse_single); // fade in and out a sinlge pixel, rainbow if this->color == black
   update:
-    pulse neopixels (color cycle if none set)
-    button.update
-    if button.fallingEdge {
-      Sensor.enable()
-    }
-    if button.risingEdge {
-      Sensor.disable()
-    }
     if ( Sensor.color() != this->color && Sensor.color() != black ) {
       this->previewColor = Sensor.color();
       goto state preview
     }
+    button.update
+    if button.risingEdge {
+      Sensor.disable()
+    } else if button.fallingEdge {
+      Sensor.enable()
+    }
 
 preview:
   enter:
-    set animation sequence(picker_init_preview, solid) (fill display with this->previewColor, then hold preview color)
+    Animation.setSequence(picker_init_preview, picker_solid) (fill display with this->previewColor, then hold preview color)
       (animation internally sets animation.transitioning = true)
     reset timeout timer
   update:

    }
    button.update
    if button.pressed = false && timeout.expired {
      goto reset
    }
    // todo problem here.  on falling edge, set reset timer for 250 millis.  enable or confirm after 250 millis
    if button.fallingEdge {
      if button pushed for more than 250 millis {
        if button.isDoubleClick {
          goto confirm
        } else {
          Sensor.enable()
          set animation to solid

/*
]
                                            initialize
                                                v
                            --------------->  ready <--------------------------
