Proper double-checked lazy initialization for preferencesFile
putSpi now throws RTEs instead of swallowing exceptions