https://yann.sugarsplashes.com/posts/using-state-machines/
Using State Machines