diff --git a/gui/action.cpp b/gui/action.cpp
index c298d02..8ea1dae 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -385,8 +385,9 @@
 	}
 	else
 	{
-		for (it = mActions.begin(); it != mActions.end(); ++it)
-			doAction(*it);
+		const size_t cnt = mActions.size();
+		for (size_t i = 0; i < cnt; ++i)
+			doAction(mActions[i]);
 	}
 
 	return 0;
@@ -484,7 +485,6 @@
 	int check = 0, ret_val = 0;
 	std::string theme_path;
 
-	operation_start("Reload Theme");
 	theme_path = DataManager::GetSettingsStoragePath();
 	if (PartitionManager.Mount_By_Path(theme_path.c_str(), 1) < 0) {
 		LOGERR("Unable to mount %s during reload function startup.\n", theme_path.c_str());
@@ -502,7 +502,6 @@
 			ret_val = 1;
 		}
 	}
-	operation_end(ret_val);
 	return 0;
 }
 
diff --git a/gui/pages.cpp b/gui/pages.cpp
index aae85ae..94c351b 100644
--- a/gui/pages.cpp
+++ b/gui/pages.cpp
@@ -557,11 +557,16 @@
 {
 	for (std::vector<Page*>::iterator itr = mPages.begin(); itr != mPages.end(); ++itr)
 		delete *itr;
-	for (std::vector<xml_node<>*>::iterator itr2 = templates.begin(); itr2 != templates.end(); ++itr2)
-		delete *itr2;
 
 	delete mResources;
 	free(mXmlFile);
+
+	mDoc.clear();
+
+	for (std::vector<xml_document<>*>::iterator itr = mIncludedDocs.begin(); itr != mIncludedDocs.end(); ++itr) {
+		(*itr)->clear();
+		delete *itr;
+	}
 }
 
 int PageSet::Load(ZipArchive* package)
@@ -605,7 +610,7 @@
 			return -1;
 		}
 	}
-	
+
 	return CheckInclude(package, &mDoc);
 }
 
@@ -620,7 +625,7 @@
 	long len;
 	char* xmlFile = NULL;
 	string filename;
-	xml_document<> doc;
+	xml_document<> *doc = NULL;
 
 	par = parentDoc->first_node("recovery");
 	if (!par) {
@@ -682,11 +687,14 @@
 				return -1;
 			}
 		}
-		doc.parse<0>(xmlFile);
 
-		parent = doc.first_node("recovery");
+		xmlFile[len] = '\0';
+		doc = new xml_document<>();
+		doc->parse<0>(xmlFile);
+
+		parent = doc->first_node("recovery");
 		if (!parent)
-			parent = doc.first_node("install");
+			parent = doc->first_node("install");
 
 		// Now, let's parse the XML
 		LOGINFO("Loading included resources...\n");
@@ -711,11 +719,17 @@
 			templates.push_back(xmltemplate);
 
 		child = parent->first_node("pages");
-		if (child)
-			if (LoadPages(child))
-				return -1;
+		if (child && LoadPages(child))
+		{
+			templates.pop_back();
+			doc->clear();
+			delete doc;
+			return -1;
+		}
 
-		if (CheckInclude(package, &doc))
+		mIncludedDocs.push_back(doc);
+
+		if (CheckInclude(package, doc))
 			return -1;
 
 		chld = chld->next_sibling("xmlfile");
diff --git a/gui/pages.hpp b/gui/pages.hpp
index 2ce3e13..b042c0d 100644
--- a/gui/pages.hpp
+++ b/gui/pages.hpp
@@ -111,6 +111,7 @@
 	std::vector<xml_node<>*> templates;
 	Page* mCurrentPage;
 	Page* mOverlayPage; // This is a special case, used for "locking" the screen
+	std::vector<xml_document<>*> mIncludedDocs;
 };
 
 class PageManager
