updating now doesn't require passing the root