new state logic