updating morph properties recursively + handling added and removed submorphs