A DSL for creating Finite State Machines