DOM updates now fully controlled by setState