State updates now dynamic