function makeNP(preGUI, guiEditFlag) {
    if(!guiEditFlag) return nestedProperty;

    return function(container, attr, prefix) {
        var np = nestedProperty(container, attr);
        var npSet = np.set;
        np.set = function(val) {
            var fullAttr = (prefix || '') + attr;
            storeCurrent(fullAttr, np.get(), val, preGUI);
            npSet(val);
        };
        return np;
    };
}
Factory function to wrap nestedProperty with GUI edits if necessary
with GUI edits we add an optional prefix to the nestedProperty constructor
to prepend to the attribute string in the preGUI store.