diff --git a/lib/ocs.php b/lib/ocs.php
index d7a7951fab53d3f453a87569ef6387e1a0a65c5c..1df08df9fa1179251862c5586edc0eaf308b9c3c 100644
--- a/lib/ocs.php
+++ b/lib/ocs.php
@@ -23,6 +23,9 @@
 *
 */
 
+use Symfony\Component\Routing\Exception\ResourceNotFoundException;
+use Symfony\Component\Routing\Exception\MethodNotAllowedException;
+
 /**
  * Class to handle open collaboration services API requests
  *
@@ -93,7 +96,7 @@ class OC_OCS {
 		$format = self::readData($method, 'format', 'text', '');
 
 		$router = new OC_Router();
-		$router->useCollection('ocs');
+		$router->useCollection('root');
 		// CONFIG
 		$router->create('config', '/config.{format}')
 			->defaults(array('format' => $format))
@@ -247,6 +250,8 @@ class OC_OCS {
 			$txt='Invalid query, please check the syntax. API specifications are here: http://www.freedesktop.org/wiki/Specifications/open-collaboration-services. DEBUG OUTPUT:'."\n";
 			$txt.=OC_OCS::getdebugoutput();
 			echo(OC_OCS::generatexml($format,'failed',999,$txt));
+		} catch (MethodNotAllowedException $e) {
+			OC_Response::setStatus(405);
 		}
 		exit();
 	}
diff --git a/lib/route.php b/lib/route.php
index df3a18e844f3ec8927104c5512fee1afe1950d70..772446e56152c3056ef9472f92380f248ffe2200 100644
--- a/lib/route.php
+++ b/lib/route.php
@@ -50,7 +50,9 @@ class OC_Route extends Route {
 		if (isset($requirements['_method'])) {
 			$method = $requirements['_method'];
 		}
-		$this->method($method);
+		if ($method) {
+			$this->method($method);
+		}
 		return $this;
 	}
 
diff --git a/lib/router.php b/lib/router.php
index 3ba2125465a0042eb7d3694c33bb82d53f15c11b..dbcaff4026e5181946dc763c5f7c3e7d5dbeb199 100644
--- a/lib/router.php
+++ b/lib/router.php
@@ -10,19 +10,21 @@ use Symfony\Component\Routing\Matcher\UrlMatcher;
 use Symfony\Component\Routing\RequestContext;
 use Symfony\Component\Routing\RouteCollection;
 //use Symfony\Component\Routing\Route;
-use Symfony\Component\Routing\Exception\ResourceNotFoundException;
 
 class OC_Router {
 	protected $collections = array();
 	protected $collection = null;
 	protected $root = null;
 
+	public function __construct() {
+		// TODO cache
+		$this->root = $this->getCollection('root');
+	}
+
 	/**
 	 * loads the api routes
 	 */
 	public function loadRoutes() {
-		// TODO cache
-		$this->root = $this->getCollection('root');
 		foreach(OC_APP::getEnabledApps() as $app){
 			$file = OC_App::getAppPath($app).'/appinfo/routes.php';
 			if(file_exists($file)){