     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:

      reset timeout timer
    }


  reset:
    enter:
      set animation to reset (clear display and set back to this->color)
        (animation internally sets animation.transitioning = true)
    update:
      clearing display, going back to single pixel
      if !animation.Transitioning() { // updated when display has been emptied to only a single pixel
        goto ready
      }

  confirm
    enter:
      this->color = this->previewColor
      Network.publish(this->color) // initiate network sendWithAck event
      set animation to picker_confirm
    update:
      





  loop{
    Animation.update()
    Sensor.update()
    Network.update()
    state.update()
  }

 
  // set a sequence of transitional animatinos, ending with a stable one.

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