virtual finite state machine