more state changing logic