only changing state if it's not currently in that state