diff --git a/lib/memcache/cache.php b/lib/memcache/cache.php
index 331c689f0659858689a4624caac77c5fb5e22e04..b9e0c2249ac4580cf1e62bad13ba2926923cc04c 100644
--- a/lib/memcache/cache.php
+++ b/lib/memcache/cache.php
@@ -9,23 +9,7 @@
 namespace OC\Memcache;
 
 abstract class Cache {
-	/**
-	 * get a cache instance
-	 *
-	 * @param bool $global
-	 * @return Cache
-	 */
-	static function create($global = false) {
-		if (XCache::isAvailable()) {
-			return new XCache($global);
-		} elseif (APC::isAvailable()) {
-			return new APC($global);
-		} elseif (Memcached::isAvailable()) {
-			return new Memcached($global);
-		} else {
-			return null;
-		}
-	}
+
 
 	/**
 	 * @param bool $global
@@ -63,11 +47,4 @@ abstract class Cache {
 	 * @return mixed
 	 */
 	abstract public function clear($prefix = '');
-
-	/**
-	 * @return bool
-	 */
-	static public function isAvailable() {
-		return XCache::isAvailable() || APC::isAvailable() || Memcached::isAvailable();
-	}
 }
diff --git a/lib/memcache/factory.php b/lib/memcache/factory.php
new file mode 100644
index 0000000000000000000000000000000000000000..1926582aa5c548a79378a7500905570d2e37372c
--- /dev/null
+++ b/lib/memcache/factory.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Memcache;
+
+class Factory {
+	/**
+	 * get a cache instance, will return null if no backend is available
+	 *
+	 * @param bool $global
+	 * @return \OC\Memcache\Cache
+	 */
+	function create($global = false) {
+		if (XCache::isAvailable()) {
+			return new XCache($global);
+		} elseif (APC::isAvailable()) {
+			return new APC($global);
+		} elseif (Memcached::isAvailable()) {
+			return new Memcached($global);
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * check if there is a memcache backend available
+	 *
+	 * @return bool
+	 */
+	public function isAvailable() {
+		return XCache::isAvailable() || APC::isAvailable() || Memcached::isAvailable();
+	}
+}