SimpleFSM - a Ruby DSL for FSMs