diff --git a/lib/base.php b/lib/base.php
index 66d2d400285aadaeea6149f67af0758056b66c78..dff73ef1ae8df31eaec321b23d10addc0864042e 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -433,13 +433,9 @@ class OC{
 		//setup extra user backends
 		OC_User::setupBackends();
 
-		// register cache cleanup jobs
-		OC_BackgroundJob_RegularTask::register('OC_Cache_FileGlobal', 'gc');
-		OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener');
-
-		// Check for blacklisted files
-		OC_Hook::connect('OC_Filesystem', 'write', 'OC_Filesystem', 'isBlacklisted');
-		OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted');
+		self::registerCacheHooks();
+		self::registerFilesystemHooks();
+		self::registerShareHooks();
 
 		//make sure temporary files are cleaned up
 		register_shutdown_function(array('OC_Helper', 'cleanTmp'));
@@ -474,6 +470,34 @@ class OC{
 		}
 	}
 
+	/**
+	 * register hooks for the cache
+	 */
+	public static function registerCacheHooks() {
+		// register cache cleanup jobs
+		OC_BackgroundJob_RegularTask::register('OC_Cache_FileGlobal', 'gc');
+		OC_Hook::connect('OC_User', 'post_login', 'OC_Cache_File', 'loginListener');
+	}
+
+	/**
+	 * register hooks for the filesystem
+	 */
+	public static function registerFilesystemHooks() {
+		// Check for blacklisted files
+		OC_Hook::connect('OC_Filesystem', 'write', 'OC_Filesystem', 'isBlacklisted');
+		OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted');
+	}
+
+	/**
+	 * register hooks for sharing
+	 */
+	public static function registerShareHooks() {
+		OC_Hook::connect('OC_User', 'post_deleteUser', 'OCP\Share', 'post_deleteUser');
+		OC_Hook::connect('OC_User', 'post_addToGroup', 'OCP\Share', 'post_addToGroup');
+		OC_Hook::connect('OC_User', 'post_removeFromGroup', 'OCP\Share', 'post_removeFromGroup');
+		OC_Hook::connect('OC_User', 'post_deleteGroup', 'OCP\Share', 'post_deleteGroup');
+	}
+
 	/**
 	 * @brief Handle the request
 	 */
diff --git a/lib/public/share.php b/lib/public/share.php
index 653ea64fa60d50fa233ddfcd1ca47a490cbca326..d736871d2440004d99fac20eaa75c3a3f2be9d90 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -20,11 +20,6 @@
 */
 namespace OCP;
 
-\OC_Hook::connect('OC_User', 'post_deleteUser', 'OCP\Share', 'post_deleteUser');
-\OC_Hook::connect('OC_User', 'post_addToGroup', 'OCP\Share', 'post_addToGroup');
-\OC_Hook::connect('OC_User', 'post_removeFromGroup', 'OCP\Share', 'post_removeFromGroup');
-\OC_Hook::connect('OC_User', 'post_deleteGroup', 'OCP\Share', 'post_deleteGroup');
-
 /**
 * This class provides the ability for apps to share their content between users.
 * Apps must create a backend class that implements OCP\Share_Backend and register it with this class.
diff --git a/tests/lib/filesystem.php b/tests/lib/filesystem.php
index 0008336383efae0ba1be56a9112b4694d60f5b9d..5cced4946d9b9aba4738eaf18cefd3f15ebce990 100644
--- a/tests/lib/filesystem.php
+++ b/tests/lib/filesystem.php
@@ -74,8 +74,7 @@ class Test_Filesystem extends UnitTestCase {
 
 	public function testBlacklist() {
 		OC_Hook::clear('OC_Filesystem');
-		OC_Hook::connect('OC_Filesystem', 'write', 'OC_Filesystem', 'isBlacklisted');
-		OC_Hook::connect('OC_Filesystem', 'rename', 'OC_Filesystem', 'isBlacklisted');
+		OC::registerFilesystemHooks();
 
 		$run = true;
 		OC_Hook::emit(
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php
index 3cdae98ca6448020448ede4736f540c417a39cb7..92f5d065cf26fb7c1bb2703f74a2244d96721420 100644
--- a/tests/lib/share/share.php
+++ b/tests/lib/share/share.php
@@ -54,6 +54,8 @@ class Test_Share extends UnitTestCase {
 		OC_Group::addToGroup($this->user2, $this->group2);
 		OC_Group::addToGroup($this->user4, $this->group2);
 		OCP\Share::registerBackend('test', 'Test_Share_Backend');
+		OC_Hook::clear('OCP\\Share');
+		OC::registerShareHooks();
 	}
 
 	public function tearDown() {