NSUserdefaults architecture