create new object based on old object and set of modifications that can be applied at selective depths