diff --git a/lib/private/appframework/middleware/middlewaredispatcher.php b/lib/private/appframework/middleware/middlewaredispatcher.php
index 70ab108e6b884d8404504a2db5bc246c3c2aa578..5cce97b216773d4d7ec3b6e0b24354be01cd2161 100644
--- a/lib/private/appframework/middleware/middlewaredispatcher.php
+++ b/lib/private/appframework/middleware/middlewaredispatcher.php
@@ -26,7 +26,7 @@ namespace OC\AppFramework\Middleware;
 
 use OC\AppFramework\Controller\Controller;
 use OCP\AppFramework\Http\Response;
-
+use OCP\AppFramework\IMiddleWare;
 
 /**
  * This class is used to store and run all the middleware in correct order
@@ -58,7 +58,7 @@ class MiddlewareDispatcher {
 	 * Adds a new middleware
 	 * @param Middleware $middleware the middleware which will be added
 	 */
-	public function registerMiddleware(Middleware $middleWare){
+	public function registerMiddleware(IMiddleware $middleWare){
 		array_push($this->middlewares, $middleWare);
 	}
 
diff --git a/lib/private/appframework/middleware/security/securitymiddleware.php b/lib/private/appframework/middleware/security/securitymiddleware.php
index 4f1447e1afba11ffea26f40792be80c392b053b3..d6daf737bb4f48a0125b49aec09a68ec1febf07f 100644
--- a/lib/private/appframework/middleware/security/securitymiddleware.php
+++ b/lib/private/appframework/middleware/security/securitymiddleware.php
@@ -29,8 +29,8 @@ use OC\AppFramework\Http\Http;
 use OC\AppFramework\Http\Request;
 use OC\AppFramework\Http\RedirectResponse;
 use OC\AppFramework\Utility\MethodAnnotationReader;
-use OC\AppFramework\Middleware\Middleware;
 use OC\AppFramework\Core\API;
+use OCP\AppFramework\Middleware;
 use OCP\AppFramework\Http\Response;
 use OCP\AppFramework\Http\JSONResponse;
 
diff --git a/lib/private/appframework/middleware/middleware.php b/lib/public/appframework/middleware.php
similarity index 97%
rename from lib/private/appframework/middleware/middleware.php
rename to lib/public/appframework/middleware.php
index b12c03c3eb8da3627077f148679bc5d8aa8dd09e..0f08eaef36386ff4a7c472d3fb134027153b20a1 100644
--- a/lib/private/appframework/middleware/middleware.php
+++ b/lib/public/appframework/middleware.php
@@ -22,7 +22,7 @@
  */
 
 
-namespace OC\AppFramework\Middleware;
+namespace OCP\AppFramework;
 
 use OCP\AppFramework\Http\Response;
 
@@ -33,7 +33,7 @@ use OCP\AppFramework\Http\Response;
  * They're modeled after Django's middleware system:
  * https://docs.djangoproject.com/en/dev/topics/http/middleware/
  */
-abstract class Middleware {
+abstract class Middleware implements IMiddleWare {
 
 
 	/**
diff --git a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php
index 43727846dcf3863af85aa4b14f272d060b805ec6..dd85a9ad52f3c822c332f71cd291d0fc46af6497 100644
--- a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php
+++ b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php
@@ -25,8 +25,8 @@
 namespace OC\AppFramework;
 
 use OC\AppFramework\Http\Request;
-use OC\AppFramework\Middleware\Middleware;
 use OC\AppFramework\Middleware\MiddlewareDispatcher;
+use OCP\AppFramework\Middleware;
 use OCP\AppFramework\Http\Response;
 
 
@@ -142,12 +142,12 @@ class MiddlewareDispatcherTest extends \PHPUnit_Framework_TestCase {
 
 	public function testAfterExceptionShouldReturnResponseOfMiddleware(){
 		$response = new Response();
-		$m1 = $this->getMock('\OC\AppFramework\Middleware\Middleware',
+		$m1 = $this->getMock('\OCP\AppFramework\Middleware',
 				array('afterException', 'beforeController'));
 		$m1->expects($this->never())
 				->method('afterException');
 
-		$m2 = $this->getMock('OC\AppFramework\Middleware\Middleware',
+		$m2 = $this->getMock('OCP\AppFramework\Middleware',
 				array('afterException', 'beforeController'));
 		$m2->expects($this->once())
 				->method('afterException')
@@ -267,7 +267,7 @@ class MiddlewareDispatcherTest extends \PHPUnit_Framework_TestCase {
 	public function testExceptionShouldRunAfterExceptionOfOnlyPreviouslyExecutedMiddlewares(){
 		$m1 = $this->getMiddleware();
 		$m2 = $this->getMiddleware(true);
-		$m3 = $this->getMock('\OC\AppFramework\Middleware\Middleware');
+		$m3 = $this->getMock('\OCP\AppFramework\Middleware');
 		$m3->expects($this->never())
 				->method('afterException');
 		$m3->expects($this->never())
diff --git a/tests/lib/appframework/middleware/MiddlewareTest.php b/tests/lib/appframework/middleware/MiddlewareTest.php
index 5e2930ac6a36a426127e164286ae1093a8006680..d0be7f7ca74994f63f3f6453bff3fa4c0c039877 100644
--- a/tests/lib/appframework/middleware/MiddlewareTest.php
+++ b/tests/lib/appframework/middleware/MiddlewareTest.php
@@ -25,7 +25,7 @@
 namespace OC\AppFramework;
 
 use OC\AppFramework\Http\Request;
-use OC\AppFramework\Middleware\Middleware;
+use OCP\AppFramework\Middleware;
 
 
 class ChildMiddleware extends Middleware {};