better state transitions