diff --git a/apps/files_encryption/ajax/adminrecovery.php b/apps/files_encryption/ajax/adminrecovery.php
index 0ab449709c388107d81c693c9656925e70d86eb2..dc13bc57c115f17c5a4ff5bcd0546b3c2074d72e 100644
--- a/apps/files_encryption/ajax/adminrecovery.php
+++ b/apps/files_encryption/ajax/adminrecovery.php
@@ -21,74 +21,14 @@ $recoveryKeyId = OC_Appconfig::getValue('files_encryption', 'recoveryKeyId');
 
 if (isset($_POST['adminEnableRecovery']) && $_POST['adminEnableRecovery'] == 1){
 
-	$view = new \OC\Files\View('/');
-
-	if ($recoveryKeyId === null) {
-		$recoveryKeyId = 'recovery_' . substr(md5(time()), 0, 8);
-		\OC_Appconfig::setValue('files_encryption', 'recoveryKeyId', $recoveryKeyId);
-	}
-
-	if (!$view->is_dir('/owncloud_private_key')) {
-		$view->mkdir('/owncloud_private_key');
-	}
-
-	if (
-		(!$view->file_exists("/public-keys/" . $recoveryKeyId . ".public.key")
-		|| !$view->file_exists("/owncloud_private_key/" . $recoveryKeyId . ".private.key"))
-	) {
-
-		$keypair = \OCA\Encryption\Crypt::createKeypair();
-
-		\OC_FileProxy::$enabled = false;
-
-		// Save public key
-
-		if (!$view->is_dir('/public-keys')) {
-			$view->mkdir('/public-keys');
-		}
-
-		$view->file_put_contents('/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey']);
-
-		// Encrypt private key empthy passphrase
-		$encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $_POST['recoveryPassword']);
-
-		// Save private key
-		$view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey);
-
-		// create control file which let us check later on if the entered password was correct.
-		$encryptedControlData =  \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']);
-		if (!$view->is_dir('/control-file')) {
-			$view->mkdir('/control-file');
-		}
-		$view->file_put_contents('/control-file/controlfile.enc', $encryptedControlData);
-
-		\OC_FileProxy::$enabled = true;
-
-		// Set recoveryAdmin as enabled
-		OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1);
-
-		$return = true;
-
-	} else { // get recovery key and check the password
-		$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser());
-		$return = $util->checkRecoveryPassword($_POST['recoveryPassword']);
-		if ($return) {
-			OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1);
-		} 
-	}
+	$return = \Helper::adminEnableRecovery($recoveryKeyId, $_POST['recoveryPassword']);
 
 // Disable recoveryAdmin
 } elseif (
 	isset($_POST['adminEnableRecovery'])
 	&& 0 == $_POST['adminEnableRecovery']
 ) {
-	$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser());
-	$return = $util->checkRecoveryPassword($_POST['recoveryPassword']);
-
-	if ($return) {
-	// Set recoveryAdmin as disabled
-	OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 0);
-	}
+	$return = \Helper::adminDisableRecovery($_POST['recoveryPassword']);
 }
 
 // Return success or failure
diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php
index 86d860465e632333c2b8db56e03ce360d8088861..a04c65e251f66f0250c10a3381f0029b80a9591b 100755
--- a/apps/files_encryption/lib/helper.php
+++ b/apps/files_encryption/lib/helper.php
@@ -26,6 +26,10 @@ namespace OCA\Encryption;
 /**
  * @brief Class to manage registration of hooks an various helper methods
  */
+/**
+ * Class Helper
+ * @package OCA\Encryption
+ */
 class Helper {
 		
 	/**
@@ -89,4 +93,92 @@ class Helper {
 
         return true;
     }
+
+	/**
+	 * @brief enable recovery
+	 *
+	 * @param $recoveryKeyId
+	 * @param $recoveryPassword
+	 * @internal param \OCA\Encryption\Util $util
+	 * @internal param string $password
+	 * @return bool
+	 */
+	public static function adminEnableRecovery($recoveryKeyId, $recoveryPassword) {
+		$view = new \OC\Files\View('/');
+
+		if ($recoveryKeyId === null) {
+			$recoveryKeyId = 'recovery_' . substr(md5(time()), 0, 8);
+			\OC_Appconfig::setValue('files_encryption', 'recoveryKeyId', $recoveryKeyId);
+		}
+
+		if (!$view->is_dir('/owncloud_private_key')) {
+			$view->mkdir('/owncloud_private_key');
+		}
+
+		if (
+			(!$view->file_exists("/public-keys/" . $recoveryKeyId . ".public.key")
+				|| !$view->file_exists("/owncloud_private_key/" . $recoveryKeyId . ".private.key"))
+		) {
+
+			$keypair = \OCA\Encryption\Crypt::createKeypair();
+
+			\OC_FileProxy::$enabled = false;
+
+			// Save public key
+
+			if (!$view->is_dir('/public-keys')) {
+				$view->mkdir('/public-keys');
+			}
+
+			$view->file_put_contents('/public-keys/' . $recoveryKeyId . '.public.key', $keypair['publicKey']);
+
+			// Encrypt private key empthy passphrase
+			$encryptedPrivateKey = \OCA\Encryption\Crypt::symmetricEncryptFileContent($keypair['privateKey'], $recoveryPassword);
+
+			// Save private key
+			$view->file_put_contents('/owncloud_private_key/' . $recoveryKeyId . '.private.key', $encryptedPrivateKey);
+
+			// create control file which let us check later on if the entered password was correct.
+			$encryptedControlData =  \OCA\Encryption\Crypt::keyEncrypt("ownCloud", $keypair['publicKey']);
+			if (!$view->is_dir('/control-file')) {
+				$view->mkdir('/control-file');
+			}
+			$view->file_put_contents('/control-file/controlfile.enc', $encryptedControlData);
+
+			\OC_FileProxy::$enabled = true;
+
+			// Set recoveryAdmin as enabled
+			\OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1);
+
+			$return = true;
+
+		} else { // get recovery key and check the password
+			$util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), \OCP\User::getUser());
+			$return = $util->checkRecoveryPassword($_POST['recoveryPassword']);
+			if ($return) {
+				\OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 1);
+			}
+		}
+
+		return $return;
+	}
+
+
+	/**
+	 * @brief disable recovery
+	 *
+	 * @param $recoveryPassword
+	 * @return bool
+	 */
+	public static function adminDisableRecovery($recoveryPassword) {
+		$util = new Util(new \OC_FilesystemView('/'), \OCP\User::getUser());
+		$return = $util->checkRecoveryPassword($recoveryPassword);
+
+		if ($return) {
+			// Set recoveryAdmin as disabled
+			\OC_Appconfig::setValue('files_encryption', 'recoveryAdminEnabled', 0);
+		}
+
+		return $return;
+	}
 }
\ No newline at end of file