Why can't we just call mergeWithDefaultProperties() right after updateDefaultProperties() so it's in the same loop?