private void saveShieldStorage() {
		if (shieldStorageConfig == null || shieldStorageConfig == null) {
			// Don't save if there is nothing to save
		    return;
	    }

		// Make a backup of the old storage file just in case
		File backupFile = new File(directory, "shields.yml.old");
		try {
			// Create backup file if it doesn't exist (may throw IOException)
			backupFile.createNewFile();

			// Open files for reading/writing (may throw FileNotFoundException)
			FileInputStream in = new FileInputStream(shieldStorageFile);
			FileOutputStream out = new FileOutputStream(backupFile);

			// Set up buffer
			byte[] data = new byte[4096];
			int bytes = 0;

			// Copy data into backup file (may throw IOException)
			while((bytes = in.read(data)) >= 0) {
				out.write(data, 0, bytes);
			}

			// Close files (may throw IOException)
			out.close();
			in.close();
		} catch(java.io.FileNotFoundException ex) {
			log.warning("[FactionShield] FactionShield: Failed to back up shields.yml: File not found");
		} catch (IOException e) {
			log.warning("[FactionShield] FactionShield: Failed to back up shields.yml: Read or write error");
		}

	    try {
	    	// Attempt to write changed config to disk
	        shieldStorageConfig.save(shieldStorageFile);
	    } catch (IOException ex) {
	        log.info("Could not persist storage to " + shieldStorageFile + ex);
	    }
	}