Save version number to storage
diff --git a/gui/action.cpp b/gui/action.cpp
index afa52d1..771c5e7 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -981,6 +981,7 @@
 
 					DataManager::SetValue(TW_IS_ENCRYPTED, 0);
 					DataManager::ReadSettingsFile();
+					TWFunc::Output_Version();
 					if (OpenRecoveryScript::check_for_script_file()) {
 						ui_print("Processing OpenRecoveryScript file...\n");
 						if (OpenRecoveryScript::run_script_file() == 0) {
diff --git a/recovery.cpp b/recovery.cpp
index 3c44472..41bd080 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -809,11 +809,6 @@
 	DataManager_LoadDefaults();
 	printf("Starting the UI...");
 	gui_init();
-	//printf("=> Installing busybox into /sbin\n");
-	//system("/sbin/bbinstall.sh"); // Let's install busybox
-	printf("Symlinking gzip to pigz\n");
-	system("ln -sf /sbin/pigz /sbin/gzip");
-	system("ln -sf /sbin/unpigz /sbin/gunzip");
 	printf("=> Linking mtab\n");
 	system("ln -s /proc/mounts /etc/mtab"); // And link mtab for mke2fs
 	printf("=> Processing recovery.fstab\n");
@@ -931,6 +926,7 @@
 		finish_recovery(NULL);
 		DataManager_ReadSettingsFile();
 		if (DataManager_GetIntValue(TW_IS_ENCRYPTED) == 0 && OpenRecoveryScript::check_for_script_file()) {
+			TWFunc::Output_Version();
 			gui_console_only();
 			OpenRecoveryScript::run_script_file();
 			if (1 || OpenRecoveryScript::run_script_file() != 0) {
diff --git a/twrp-functions.cpp b/twrp-functions.cpp
index 28d0ba5..3200017 100644
--- a/twrp-functions.cpp
+++ b/twrp-functions.cpp
@@ -15,6 +15,7 @@
 #include "common.h"
 #include "data.hpp"
 #include "bootloader.h"
+#include "variables.h"
 
 /*  Checks md5 for a path
     Return values:
@@ -385,4 +386,29 @@
 		system(script_file);
 		ui_print("\nFinished running %s script.\n", display_name);
 	}
+}
+
+void TWFunc::Output_Version(void) {
+	string Path, Command;
+	char version[255];
+
+	Path = DataManager::GetSettingsStoragePath();
+	if (!PartitionManager.Mount_By_Path(Path, false)) {
+		LOGI("Unable to mount '%s' to write version number.\n");
+		return;
+	}
+	Path += "/TWRP/.version";
+	if (Path_Exists(Path)) {
+		Command = "rm -f " + Path;
+		system(Command.c_str());
+	}
+	FILE *fp = fopen(Path.c_str(), "w");
+	if (fp == NULL) {
+		LOGE("Unable to open '%s'.\n", Path.c_str());
+		return;
+	}
+	strcpy(version, TW_VERSION_STR);
+	fwrite(version, sizeof(version[0]), strlen(version) / sizeof(version[0]), fp);
+	fclose(fp);
+	sync();
 }
\ No newline at end of file
diff --git a/twrp-functions.hpp b/twrp-functions.hpp
index 7bda287..da17e3c 100644
--- a/twrp-functions.hpp
+++ b/twrp-functions.hpp
@@ -33,9 +33,10 @@
 	static void GUI_Operation_Text(string Read_Value, string Default_Text);     // Updates text for display in the GUI, e.g. Backing up %partition name%
 	static void GUI_Operation_Text(string Read_Value, string Partition_Name, string Default_Text); // Same as above but includes partition name
 	static unsigned long Get_File_Size(string Path);                            // Returns the size of a file
-	static void twfinish_recovery(const char *send_intent);
-	static int tw_reboot(RebootCommand command);
-	static void check_and_run_script(const char* script_file, const char* display_name);
+	static void twfinish_recovery(const char *send_intent);                     // Writes the log to last_log
+	static int tw_reboot(RebootCommand command);                                // Prepares the device for rebooting
+	static void check_and_run_script(const char* script_file, const char* display_name); // checks for the existence of a script, chmods it to 755, then runs it
+	static void Output_Version(void);                                           // Outputs the version to a file in the TWRP folder
 
 private:
 	static void check_and_fclose(FILE *fp, const char *name);