statePattern

statePattern