@moffintosh It’s definitely heavier than that and specialised for very basic state management with basic guards. But it is a class and is meant to be subclassed to be used. (The states object I’m passing in in the example is about as close as you get to enums in JS. TypeScript has the concept but JS does not – although, if I remember correctly, the keyword is reserved so maybe in the future…)