should be able to replace values from multiple levels deep