finite state machines
fsms