added shouldChangeState delegate method