Update and return the new state NO GUARANTEE THAT update IS ONLY CALLED ONCE!!!! update should return a new state based on the old state
Update and return the new state NO GUARANTEE THAT update IS ONLY CALLED ONCE!!!! update should return a new state based on the old state