template update to more intelligently update existing objects instead of throwing them out and creating a new 'sparse' version of the object