An Open Source implementation of a Finite State Machine with support for non-determinstic transitions and state persistence