controller has notion of state