diff --git a/lib/appframework/controller/controller.php b/lib/appframework/controller/controller.php
index f6f34618ec66790365864156c47bbc761c88cb15..a7498ba0e1e7c579b706449d217e0f88c4c16ac2 100644
--- a/lib/appframework/controller/controller.php
+++ b/lib/appframework/controller/controller.php
@@ -24,9 +24,9 @@
 
 namespace OC\AppFramework\Controller;
 
-use OC\AppFramework\Http\TemplateResponse;
 use OC\AppFramework\Http\Request;
 use OC\AppFramework\Core\API;
+use OCP\AppFramework\Http\TemplateResponse;
 
 
 /**
@@ -133,7 +133,7 @@ abstract class Controller {
 	 * @param string $renderAs user renders a full page, blank only your template
 	 *                          admin an entry in the admin settings
 	 * @param array $headers set additional headers in name/value pairs
-	 * @return \OC\AppFramework\Http\TemplateResponse containing the page
+	 * @return \OCP\AppFramework\Http\TemplateResponse containing the page
 	 */
 	public function render($templateName, array $params=array(),
 							$renderAs='user', array $headers=array()){
diff --git a/lib/appframework/http/dispatcher.php b/lib/appframework/http/dispatcher.php
index 183854650fb915e3469da9fcb782f5b94721527e..ea57a6860cc27ea4fa4b3c9c8f8ba0a8a8db7666 100644
--- a/lib/appframework/http/dispatcher.php
+++ b/lib/appframework/http/dispatcher.php
@@ -74,6 +74,9 @@ class Dispatcher {
 		} catch(\Exception $exception){
 			$response = $this->middlewareDispatcher->afterException(
 				$controller, $methodName, $exception);
+			if (is_null($response)) {
+				throw $exception;
+			}
 		}
 
 		$response = $this->middlewareDispatcher->afterController(
diff --git a/lib/appframework/http/downloadresponse.php b/lib/appframework/http/downloadresponse.php
index 096e4fc83312162a8ab139fe28b5f5bdb72bcf2a..67b9542dba6956dc9ef919b809edf5195917a6e7 100644
--- a/lib/appframework/http/downloadresponse.php
+++ b/lib/appframework/http/downloadresponse.php
@@ -28,7 +28,7 @@ namespace OC\AppFramework\Http;
 /**
  * Prompts the user to download the a file
  */
-abstract class DownloadResponse extends Response {
+class DownloadResponse extends \OCP\AppFramework\Http\Response {
 
 	private $filename;
 	private $contentType;
diff --git a/lib/appframework/http/http.php b/lib/appframework/http/http.php
index 73f32d13b38956465b966ab42aeacae833d81af5..e00dc9cdc4a2514a34e13e958cd904fd8e858952 100644
--- a/lib/appframework/http/http.php
+++ b/lib/appframework/http/http.php
@@ -25,67 +25,7 @@
 namespace OC\AppFramework\Http;
 
 
-class Http {
-
-	const STATUS_CONTINUE = 100;
-	const STATUS_SWITCHING_PROTOCOLS = 101;
-	const STATUS_PROCESSING = 102;
-	const STATUS_OK = 200;
-	const STATUS_CREATED = 201;
-	const STATUS_ACCEPTED = 202;
-	const STATUS_NON_AUTHORATIVE_INFORMATION = 203;
-	const STATUS_NO_CONTENT = 204;
-	const STATUS_RESET_CONTENT = 205;
-	const STATUS_PARTIAL_CONTENT = 206;
-	const STATUS_MULTI_STATUS = 207;
-	const STATUS_ALREADY_REPORTED = 208;
-	const STATUS_IM_USED = 226;
-	const STATUS_MULTIPLE_CHOICES = 300;
-	const STATUS_MOVED_PERMANENTLY = 301;
-	const STATUS_FOUND = 302;
-	const STATUS_SEE_OTHER = 303;
-	const STATUS_NOT_MODIFIED = 304;
-	const STATUS_USE_PROXY = 305;
-	const STATUS_RESERVED = 306;
-	const STATUS_TEMPORARY_REDIRECT = 307;
-	const STATUS_BAD_REQUEST = 400;
-	const STATUS_UNAUTHORIZED = 401;
-	const STATUS_PAYMENT_REQUIRED = 402;
-	const STATUS_FORBIDDEN = 403;
-	const STATUS_NOT_FOUND = 404;
-	const STATUS_METHOD_NOT_ALLOWED = 405;
-	const STATUS_NOT_ACCEPTABLE = 406;
-	const STATUS_PROXY_AUTHENTICATION_REQUIRED = 407;
-	const STATUS_REQUEST_TIMEOUT = 408;
-	const STATUS_CONFLICT = 409;
-	const STATUS_GONE = 410;
-	const STATUS_LENGTH_REQUIRED = 411;
-	const STATUS_PRECONDITION_FAILED = 412;
-	const STATUS_REQUEST_ENTITY_TOO_LARGE = 413;
-	const STATUS_REQUEST_URI_TOO_LONG = 414;
-	const STATUS_UNSUPPORTED_MEDIA_TYPE = 415;
-	const STATUS_REQUEST_RANGE_NOT_SATISFIABLE = 416;
-	const STATUS_EXPECTATION_FAILED = 417;
-	const STATUS_IM_A_TEAPOT = 418;
-	const STATUS_UNPROCESSABLE_ENTITY = 422;
-	const STATUS_LOCKED = 423;
-	const STATUS_FAILED_DEPENDENCY = 424;
-	const STATUS_UPGRADE_REQUIRED = 426;
-	const STATUS_PRECONDITION_REQUIRED = 428;
-	const STATUS_TOO_MANY_REQUESTS = 429;
-	const STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;
-	const STATUS_INTERNAL_SERVER_ERROR = 500;
-	const STATUS_NOT_IMPLEMENTED = 501;
-	const STATUS_BAD_GATEWAY = 502;
-	const STATUS_SERVICE_UNAVAILABLE = 503;
-	const STATUS_GATEWAY_TIMEOUT = 504;
-	const STATUS_HTTP_VERSION_NOT_SUPPORTED = 505;
-	const STATUS_VARIANT_ALSO_NEGOTIATES = 506;
-	const STATUS_INSUFFICIENT_STORAGE = 507;
-	const STATUS_LOOP_DETECTED = 508;
-	const STATUS_BANDWIDTH_LIMIT_EXCEEDED = 509;
-	const STATUS_NOT_EXTENDED = 510;
-	const STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511;
+class Http extends \OCP\AppFramework\Http\Http{
 
 	private $server;
 	private $protocolVersion;
diff --git a/lib/appframework/http/redirectresponse.php b/lib/appframework/http/redirectresponse.php
index 727e0fb642e4df713cadf1fb1a65e50229950dc1..688447f16180c2943a704cad0c95009d1d627841 100644
--- a/lib/appframework/http/redirectresponse.php
+++ b/lib/appframework/http/redirectresponse.php
@@ -24,6 +24,8 @@
 
 namespace OC\AppFramework\Http;
 
+use OCP\AppFramework\Http\Response;
+
 
 /**
  * Redirects to a different URL
diff --git a/lib/appframework/middleware/middleware.php b/lib/appframework/middleware/middleware.php
index 4df884904685ea596fb8469e46782f668216079a..b12c03c3eb8da3627077f148679bc5d8aa8dd09e 100644
--- a/lib/appframework/middleware/middleware.php
+++ b/lib/appframework/middleware/middleware.php
@@ -24,7 +24,7 @@
 
 namespace OC\AppFramework\Middleware;
 
-use OC\AppFramework\Http\Response;
+use OCP\AppFramework\Http\Response;
 
 
 /**
diff --git a/lib/appframework/middleware/middlewaredispatcher.php b/lib/appframework/middleware/middlewaredispatcher.php
index c2d16134dc59f5ba4d718c1fa5cf610fd16e6531..70ab108e6b884d8404504a2db5bc246c3c2aa578 100644
--- a/lib/appframework/middleware/middlewaredispatcher.php
+++ b/lib/appframework/middleware/middlewaredispatcher.php
@@ -25,7 +25,7 @@
 namespace OC\AppFramework\Middleware;
 
 use OC\AppFramework\Controller\Controller;
-use OC\AppFramework\Http\Response;
+use OCP\AppFramework\Http\Response;
 
 
 /**
diff --git a/lib/appframework/middleware/security/securitymiddleware.php b/lib/appframework/middleware/security/securitymiddleware.php
index 52818b1b53ebbce131f9141c45360d5f3c63c65c..4f1447e1afba11ffea26f40792be80c392b053b3 100644
--- a/lib/appframework/middleware/security/securitymiddleware.php
+++ b/lib/appframework/middleware/security/securitymiddleware.php
@@ -27,12 +27,12 @@ namespace OC\AppFramework\Middleware\Security;
 use OC\AppFramework\Controller\Controller;
 use OC\AppFramework\Http\Http;
 use OC\AppFramework\Http\Request;
-use OC\AppFramework\Http\Response;
-use OC\AppFramework\Http\JSONResponse;
 use OC\AppFramework\Http\RedirectResponse;
 use OC\AppFramework\Utility\MethodAnnotationReader;
 use OC\AppFramework\Middleware\Middleware;
 use OC\AppFramework\Core\API;
+use OCP\AppFramework\Http\Response;
+use OCP\AppFramework\Http\JSONResponse;
 
 
 /**
diff --git a/lib/public/appframework/http/http.php b/lib/public/appframework/http/http.php
new file mode 100644
index 0000000000000000000000000000000000000000..9eafe782726ac58d78042a7dc90a439eb30b51aa
--- /dev/null
+++ b/lib/public/appframework/http/http.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * ownCloud - App Framework
+ *
+ * @author Bernhard Posselt, Thomas Tanghus, Bart Visscher
+ * @copyright 2012 Bernhard Posselt nukeawhale@gmail.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+namespace OCP\AppFramework\Http;
+
+
+class Http {
+
+	const STATUS_CONTINUE = 100;
+	const STATUS_SWITCHING_PROTOCOLS = 101;
+	const STATUS_PROCESSING = 102;
+	const STATUS_OK = 200;
+	const STATUS_CREATED = 201;
+	const STATUS_ACCEPTED = 202;
+	const STATUS_NON_AUTHORATIVE_INFORMATION = 203;
+	const STATUS_NO_CONTENT = 204;
+	const STATUS_RESET_CONTENT = 205;
+	const STATUS_PARTIAL_CONTENT = 206;
+	const STATUS_MULTI_STATUS = 207;
+	const STATUS_ALREADY_REPORTED = 208;
+	const STATUS_IM_USED = 226;
+	const STATUS_MULTIPLE_CHOICES = 300;
+	const STATUS_MOVED_PERMANENTLY = 301;
+	const STATUS_FOUND = 302;
+	const STATUS_SEE_OTHER = 303;
+	const STATUS_NOT_MODIFIED = 304;
+	const STATUS_USE_PROXY = 305;
+	const STATUS_RESERVED = 306;
+	const STATUS_TEMPORARY_REDIRECT = 307;
+	const STATUS_BAD_REQUEST = 400;
+	const STATUS_UNAUTHORIZED = 401;
+	const STATUS_PAYMENT_REQUIRED = 402;
+	const STATUS_FORBIDDEN = 403;
+	const STATUS_NOT_FOUND = 404;
+	const STATUS_METHOD_NOT_ALLOWED = 405;
+	const STATUS_NOT_ACCEPTABLE = 406;
+	const STATUS_PROXY_AUTHENTICATION_REQUIRED = 407;
+	const STATUS_REQUEST_TIMEOUT = 408;
+	const STATUS_CONFLICT = 409;
+	const STATUS_GONE = 410;
+	const STATUS_LENGTH_REQUIRED = 411;
+	const STATUS_PRECONDITION_FAILED = 412;
+	const STATUS_REQUEST_ENTITY_TOO_LARGE = 413;
+	const STATUS_REQUEST_URI_TOO_LONG = 414;
+	const STATUS_UNSUPPORTED_MEDIA_TYPE = 415;
+	const STATUS_REQUEST_RANGE_NOT_SATISFIABLE = 416;
+	const STATUS_EXPECTATION_FAILED = 417;
+	const STATUS_IM_A_TEAPOT = 418;
+	const STATUS_UNPROCESSABLE_ENTITY = 422;
+	const STATUS_LOCKED = 423;
+	const STATUS_FAILED_DEPENDENCY = 424;
+	const STATUS_UPGRADE_REQUIRED = 426;
+	const STATUS_PRECONDITION_REQUIRED = 428;
+	const STATUS_TOO_MANY_REQUESTS = 429;
+	const STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;
+	const STATUS_INTERNAL_SERVER_ERROR = 500;
+	const STATUS_NOT_IMPLEMENTED = 501;
+	const STATUS_BAD_GATEWAY = 502;
+	const STATUS_SERVICE_UNAVAILABLE = 503;
+	const STATUS_GATEWAY_TIMEOUT = 504;
+	const STATUS_HTTP_VERSION_NOT_SUPPORTED = 505;
+	const STATUS_VARIANT_ALSO_NEGOTIATES = 506;
+	const STATUS_INSUFFICIENT_STORAGE = 507;
+	const STATUS_LOOP_DETECTED = 508;
+	const STATUS_BANDWIDTH_LIMIT_EXCEEDED = 509;
+	const STATUS_NOT_EXTENDED = 510;
+	const STATUS_NETWORK_AUTHENTICATION_REQUIRED = 511;
+}
diff --git a/lib/appframework/http/jsonresponse.php b/lib/public/appframework/http/jsonresponse.php
similarity index 98%
rename from lib/appframework/http/jsonresponse.php
rename to lib/public/appframework/http/jsonresponse.php
index 750f8a2ad157432ad42d0512fa2c6bbac5eb1d21..085fdbed2f9da300aa400bae218d35dde4176873 100644
--- a/lib/appframework/http/jsonresponse.php
+++ b/lib/public/appframework/http/jsonresponse.php
@@ -22,7 +22,7 @@
  */
 
 
-namespace OC\AppFramework\Http;
+namespace OCP\AppFramework\Http;
 
 
 /**
diff --git a/lib/appframework/http/response.php b/lib/public/appframework/http/response.php
similarity index 98%
rename from lib/appframework/http/response.php
rename to lib/public/appframework/http/response.php
index 50778105f24ef8d5a15cfa008f941c808c01bc37..644772589484e1e1a0236e38ccb151f6ba4344ee 100644
--- a/lib/appframework/http/response.php
+++ b/lib/public/appframework/http/response.php
@@ -22,7 +22,7 @@
  */
 
 
-namespace OC\AppFramework\Http;
+namespace OCP\AppFramework\Http;
 
 
 /**
diff --git a/lib/appframework/http/templateresponse.php b/lib/public/appframework/http/templateresponse.php
similarity index 98%
rename from lib/appframework/http/templateresponse.php
rename to lib/public/appframework/http/templateresponse.php
index 0a32da4b1b47c4c9b5b1aa2a25a685c60be2f59d..97678c96cbaffb6cc592516fe6b3c2b0e3235350 100644
--- a/lib/appframework/http/templateresponse.php
+++ b/lib/public/appframework/http/templateresponse.php
@@ -22,7 +22,7 @@
  */
 
 
-namespace OC\AppFramework\Http;
+namespace OCP\AppFramework\Http;
 
 use OC\AppFramework\Core\API;