 		{
 			try
 			{
+				var file:File = File.applicationStorageDirectory.resolvePath(FILENAME);
+
+				// If there are no requests to save then we can delete the file if it exists
+				if(_requests.length == 0)
+				{
+					if(file.exists)
+					{
+						file.deleteFileAsync();
+					}
+					return;
+				}
+
+				// Serialize the list of URLRequests manually
 				var byteArray:ByteArray = new ByteArray();
-				byteArray.writeObject(_requests);
 
-				var file:File = File.applicationStorageDirectory.resolvePath(FILENAME);
+				// First write the number of requests that the file will contain
+				byteArray.writeUnsignedInt(_requests.length);
+
+				// Now write each request's url and data
+				for each(var request:URLRequest in _requests)
+				{
+					byteArray.writeUTF(request.url);
+					byteArray.writeUTF(request.data as String);
+				}
+
+				// Finally, write the bytes to the file
 				file.preventBackup = true;
 
 				var fileStream:FileStream = new FileStream();

					fileStream.readBytes(byteArray);
					fileStream.close();

					if(byteArray != null && byteArray.readObject() != null)
					{
						_requests = byteArray.readObject() as Vector.<URLRequest>;
					}
				}
				catch(error:Error)

			_urlLoader = new URLLoader();
			_urlLoader.addEventListener(Event.COMPLETE, requestComplete, false, 0, true);
			_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, requestError, false, 0, true);

			load();
		}
