diff --git a/prebuilt/99SuperSUDaemon b/prebuilt/99SuperSUDaemon
new file mode 100755
index 0000000..de738c1
--- /dev/null
+++ b/prebuilt/99SuperSUDaemon
@@ -0,0 +1,2 @@
+#!/system/bin/sh
+/system/xbin/daemonsu --auto-daemon &
diff --git a/prebuilt/Android.mk b/prebuilt/Android.mk
index 73432b3..08e09ac 100644
--- a/prebuilt/Android.mk
+++ b/prebuilt/Android.mk
@@ -234,6 +234,24 @@
 	LOCAL_SRC_FILES := $(LOCAL_MODULE)
 	include $(BUILD_PREBUILT)
 
+       #install-recovery.sh
+	include $(CLEAR_VARS)
+	LOCAL_MODULE := install-recovery.sh
+	LOCAL_MODULE_TAGS := eng
+	LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+	LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/supersu
+	LOCAL_SRC_FILES := $(LOCAL_MODULE)
+	include $(BUILD_PREBUILT)
+
+       #99SuperSUDaemon
+	include $(CLEAR_VARS)
+	LOCAL_MODULE := 99SuperSUDaemon
+	LOCAL_MODULE_TAGS := eng
+	LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+	LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/supersu
+	LOCAL_SRC_FILES := $(LOCAL_MODULE)
+	include $(BUILD_PREBUILT)
+
 	#SuperSU special installer APK
 	include $(CLEAR_VARS)
 	LOCAL_MODULE := Superuser.apk
diff --git a/prebuilt/chattr b/prebuilt/chattr
new file mode 100755
index 0000000..12ccf86
--- /dev/null
+++ b/prebuilt/chattr
Binary files differ
diff --git a/prebuilt/install-recovery.sh b/prebuilt/install-recovery.sh
new file mode 100755
index 0000000..9b43745
--- /dev/null
+++ b/prebuilt/install-recovery.sh
@@ -0,0 +1,19 @@
+#!/system/bin/sh
+
+# If you're implementing this in a custom kernel/firmware,
+# I suggest you use a different script name, and add a service
+# to launch it from init.rc
+
+# Launches SuperSU in daemon mode only on Android 4.3+.
+# Nothing will happen on 4.2.x or older.
+# If you want to force loading the daemon, use "--daemon" instead
+
+/system/xbin/daemonsu --auto-daemon &
+
+# Some apps like to run stuff from this script as well, but the
+# installer will have done "chattr +i" on this file to prevent
+# accidental modification and deletion. In your code, just search 
+# this file for "install-recovery-2.sh", and if present, write
+# there instead.
+
+/system/etc/install-recovery-2.sh
diff --git a/prebuilt/su b/prebuilt/su
index 7d31770..da77f0a 100755
--- a/prebuilt/su
+++ b/prebuilt/su
Binary files differ
diff --git a/twrp-functions.cpp b/twrp-functions.cpp
index e54e760..3c379d1 100644
--- a/twrp-functions.cpp
+++ b/twrp-functions.cpp
@@ -560,6 +560,17 @@
 			return false;
 		}
 	}
+	file = "/system/xbin/daemonsu";
+	if (TWFunc::Path_Exists(file)) {
+		if (chown(file.c_str(), 0, 0) != 0) {
+			LOGERR("Failed to chown '%s'\n", file.c_str());
+			return false;
+		}
+		if (tw_chmod(file, "6755") != 0) {
+			LOGERR("Failed to chmod '%s'\n", file.c_str());
+			return false;
+		}
+	}
 	file = "/system/bin/.ext/.su";
 	if (TWFunc::Path_Exists(file)) {
 		if (chown(file.c_str(), 0, 0) != 0) {
@@ -571,6 +582,28 @@
 			return false;
 		}
 	}
+	file = "/system/etc/install-recovery.sh";
+	if (TWFunc::Path_Exists(file)) {
+		if (chown(file.c_str(), 0, 0) != 0) {
+			LOGERR("Failed to chown '%s'\n", file.c_str());
+			return false;
+		}
+		if (tw_chmod(file, "0755") != 0) {
+			LOGERR("Failed to chmod '%s'\n", file.c_str());
+			return false;
+		}
+	}
+	file = "/system/etc/init.d/99SuperSUDaemon";
+	if (TWFunc::Path_Exists(file)) {
+		if (chown(file.c_str(), 0, 0) != 0) {
+			LOGERR("Failed to chown '%s'\n", file.c_str());
+			return false;
+		}
+		if (tw_chmod(file, "0755") != 0) {
+			LOGERR("Failed to chmod '%s'\n", file.c_str());
+			return false;
+		}
+	}
 	file = "/system/app/Superuser.apk";
 	if (TWFunc::Path_Exists(file)) {
 		if (chown(file.c_str(), 0, 0) != 0) {
@@ -696,13 +729,42 @@
 }
 
 bool TWFunc::Install_SuperSU(void) {
+	string status;
+
 	if (!PartitionManager.Mount_By_Path("/system", true))
 		return false;
 
+	TWFunc::Exec_Cmd("/sbin/chattr -i /system/xbin/su", status);
 	if (copy_file("/supersu/su", "/system/xbin/su", 0755) != 0) {
 		LOGERR("Failed to copy su binary to /system/bin\n");
 		return false;
 	}
+	if (!Path_Exists("/system/bin/.ext")) {
+		mkdir("/system/bin/.ext", 0777);
+	}
+	TWFunc::Exec_Cmd("/sbin/chattr -i /system/bin/.ext/su", status);
+	if (copy_file("/supersu/su", "/system/bin/.ext/su", 0755) != 0) {
+		LOGERR("Failed to copy su binary to /system/bin/.ext/su\n");
+		return false;
+	}
+	TWFunc::Exec_Cmd("/sbin/chattr -i /system/xbin/daemonsu", status);
+	if (copy_file("/supersu/su", "/system/xbin/daemonsu", 0755) != 0) {
+		LOGERR("Failed to copy su binary to /system/xbin/daemonsu\n");
+		return false;
+	}
+	if (Path_Exists("/system/etc/init.d")) {
+		TWFunc::Exec_Cmd("/sbin/chattr -i /system/etc/init.d/99SuperSUDaemon", status);
+		if (copy_file("/supersu/99SuperSUDaemon", "/system/etc/init.d/99SuperSUDaemon", 0755) != 0) {
+			LOGERR("Failed to copy 99SuperSUDaemon to /system/etc/init.d/99SuperSUDaemon\n");
+			return false;
+		}
+	} else {
+		TWFunc::Exec_Cmd("/sbin/chattr -i /system/etc/install-recovery.sh", status);
+		if (copy_file("/supersu/install-recovery.sh", "/system/etc/install-recovery.sh", 0755) != 0) {
+			LOGERR("Failed to copy install-recovery.sh to /system/etc/install-recovery.sh\n");
+			return false;
+		}
+	}
 	if (copy_file("/supersu/Superuser.apk", "/system/app/Superuser.apk", 0644) != 0) {
 		LOGERR("Failed to copy Superuser app to /system/app\n");
 		return false;
diff --git a/variables.h b/variables.h
index b8a9380..8c88e91 100644
--- a/variables.h
+++ b/variables.h
@@ -17,7 +17,7 @@
 #ifndef _VARIABLES_HEADER_
 #define _VARIABLES_HEADER_
 
-#define TW_VERSION_STR              "2.6.0.4"
+#define TW_VERSION_STR              "2.6.1.0"
 
 #define TW_USE_COMPRESSION_VAR      "tw_use_compression"
 #define TW_FILENAME                 "tw_filename"
