update with working child traversal