added (hopefully) efficient recursive updating of field contents