restructured how apps handle data, attrs, and nodes