only change state in the "switch" (outside of controller) to avoid spaghetti flow as the project grows...