Index: /branches/eraser6/pluginsRewrite/Eraser.Plugins/Settings.cs
===================================================================
--- /branches/eraser6/pluginsRewrite/Eraser.Plugins/Settings.cs	(revision 2480)
+++ /branches/eraser6/pluginsRewrite/Eraser.Plugins/Settings.cs	(revision 2481)
@@ -126,5 +126,5 @@
 			get
 			{
-				return Store.GetValue("PlausibleDeniabilityFiles", new List<string>());
+				return Store.GetValue<IList<string>>("PlausibleDeniabilityFiles");
 			}
 		}
Index: /branches/eraser6/pluginsRewrite/Eraser/Settings.cs
===================================================================
--- /branches/eraser6/pluginsRewrite/Eraser/Settings.cs	(revision 2480)
+++ /branches/eraser6/pluginsRewrite/Eraser/Settings.cs	(revision 2481)
@@ -85,4 +85,12 @@
 			public override T GetValue<T>(string name, T defaultValue)
 			{
+				//Determine whether the default value is suitable. Collections
+				//of strings should return an empty SettingsList.
+				if (typeof(T).GetInterfaces().Any(x => x == typeof(IEnumerable<string>)) &&
+					(object)defaultValue == (object)default(T))
+				{
+					defaultValue = (T)(IEnumerable<string>)new SettingsList<string>(this, name, null);
+				}
+
 				//Get the raw registry value
 				object rawResult = Key.GetValue(name, null);
@@ -119,4 +127,8 @@
 				{
 					return (T)Convert.ChangeType(rawResult, typeof(T));
+				}
+				else if (typeof(T).GetInterfaces().Any(x => x == typeof(IEnumerable<string>)))
+				{
+					return (T)(object)new SettingsList<string>(this, name, (IEnumerable<string>)rawResult);
 				}
 				else
@@ -234,11 +246,10 @@
 	class SettingsList<T> : IList<T>
 	{
-		public SettingsList(Settings settings, string settingName)
-		{
-			Settings = settings;
+		public SettingsList(PersistentStore store, string settingName, IEnumerable<T> values)
+		{
+			Store = store;
 			SettingName = settingName;
 			List = new List<T>();
 
-			T[] values = settings.GetValue<T[]>(settingName);
 			if (values != null)
 				List.AddRange(values);
@@ -350,5 +361,5 @@
 		private void Save()
 		{
-			Settings.SetValue(SettingName, List);
+			Store.SetValue(SettingName, List);
 		}
 
@@ -356,5 +367,5 @@
 		/// The settings object storing the settings.
 		/// </summary>
-		private Settings Settings;
+		private PersistentStore Store;
 
 		/// <summary>
