new FSM with move-back logic to un-trigger switch
changes lastStateChangeMillis variable name to something more specific (moveStartMillis)