Refactoring complet, ajout d'une StateMachine