diff --git a/apps/dav/appinfo/v1/caldav.php b/apps/dav/appinfo/v1/caldav.php
index f2c886e0fdd0a7576ad98ea4f5e6b560f36c9c06..e9b6e3759abf1608c639040c13e045beffff3b60 100644
--- a/apps/dav/appinfo/v1/caldav.php
+++ b/apps/dav/appinfo/v1/caldav.php
@@ -23,6 +23,7 @@
 
 // Backends
 use OCA\DAV\CalDAV\CalDavBackend;
+use OCA\DAV\Connector\LegacyDAVACL;
 use OCA\DAV\Connector\Sabre\Auth;
 use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin;
 use OCA\DAV\Connector\Sabre\MaintenancePlugin;
@@ -43,12 +44,14 @@ $principalBackend = new Principal(
 $db = \OC::$server->getDatabaseConnection();
 $calDavBackend = new CalDavBackend($db, $principalBackend);
 
+$debugging = \OC::$server->getConfig()->getSystemValue('debug', false);
+
 // Root nodes
 $principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend);
-$principalCollection->disableListing = true; // Disable listing
+$principalCollection->disableListing = !$debugging; // Disable listing
 
 $addressBookRoot = new CalendarRoot($principalBackend, $calDavBackend);
-$addressBookRoot->disableListing = true; // Disable listing
+$addressBookRoot->disableListing = !$debugging; // Disable listing
 
 $nodes = array(
 	$principalCollection,
@@ -65,8 +68,10 @@ $server->addPlugin(new MaintenancePlugin());
 $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud'));
 $server->addPlugin(new \Sabre\CalDAV\Plugin());
 
-$acl = new \OCA\DAV\Connector\LegacyDAVACL();
-$server->addPlugin($acl);
+$server->addPlugin(new LegacyDAVACL());
+if ($debugging) {
+	$server->addPlugin(new Sabre\DAV\Browser\Plugin());
+}
 
 $server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin());
 $server->addPlugin(new ExceptionLoggerPlugin('caldav', \OC::$server->getLogger()));
diff --git a/apps/dav/appinfo/v1/carddav.php b/apps/dav/appinfo/v1/carddav.php
index 44abcbaa190103b8e6c65ed317d8eff19ffaee51..bd5ed465dce4a0e2d463de2f279152d2453d1a89 100644
--- a/apps/dav/appinfo/v1/carddav.php
+++ b/apps/dav/appinfo/v1/carddav.php
@@ -24,6 +24,7 @@
 // Backends
 use OCA\DAV\CardDAV\AddressBookRoot;
 use OCA\DAV\CardDAV\CardDavBackend;
+use OCA\DAV\Connector\LegacyDAVACL;
 use OCA\DAV\Connector\Sabre\Auth;
 use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin;
 use OCA\DAV\Connector\Sabre\MaintenancePlugin;
@@ -44,12 +45,14 @@ $principalBackend = new Principal(
 $db = \OC::$server->getDatabaseConnection();
 $cardDavBackend = new CardDavBackend($db, $principalBackend);
 
+$debugging = \OC::$server->getConfig()->getSystemValue('debug', false);
+
 // Root nodes
 $principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend);
-$principalCollection->disableListing = true; // Disable listing
+$principalCollection->disableListing = !$debugging; // Disable listing
 
 $addressBookRoot = new AddressBookRoot($principalBackend, $cardDavBackend);
-$addressBookRoot->disableListing = true; // Disable listing
+$addressBookRoot->disableListing = !$debugging; // Disable listing
 
 $nodes = array(
 	$principalCollection,
@@ -65,8 +68,10 @@ $server->addPlugin(new MaintenancePlugin());
 $server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud'));
 $server->addPlugin(new Plugin());
 
-$acl = new \OCA\DAV\Connector\LegacyDAVACL();
-$server->addPlugin($acl);
+$server->addPlugin(new LegacyDAVACL());
+if ($debugging) {
+	$server->addPlugin(new Sabre\DAV\Browser\Plugin());
+}
 
 $server->addPlugin(new \Sabre\CardDAV\VCFExportPlugin());
 $server->addPlugin(new ExceptionLoggerPlugin('carddav', \OC::$server->getLogger()));
diff --git a/apps/dav/lib/carddav/plugin.php b/apps/dav/lib/carddav/plugin.php
index d94dce1db0e5b9d0c43bd4e7d651cc829ce165de..e02cc5686b8ed1d193479e855d85a67ad14a4437 100644
--- a/apps/dav/lib/carddav/plugin.php
+++ b/apps/dav/lib/carddav/plugin.php
@@ -46,6 +46,10 @@ class Plugin extends \Sabre\CardDAV\Plugin {
 			list(, $principalId) = URLUtil::splitPath($principal);
 			return self::ADDRESSBOOK_ROOT . '/users/' . $principalId;
 		}
+		if (strrpos($principal, 'principals/groups', -strlen($principal)) !== false) {
+			list(, $principalId) = URLUtil::splitPath($principal);
+			return self::ADDRESSBOOK_ROOT . '/groups/' . $principalId;
+		}
 		if (strrpos($principal, 'principals/system', -strlen($principal)) !== false) {
 			list(, $principalId) = URLUtil::splitPath($principal);
 			return self::ADDRESSBOOK_ROOT . '/system/' . $principalId;
diff --git a/apps/dav/lib/connector/sabre/davaclplugin.php b/apps/dav/lib/connector/sabre/davaclplugin.php
index 4a9dd66161d9bcf7a2988262122b8f9eff18ad28..f5699b469c36343596986cd708118b01d73f62d0 100644
--- a/apps/dav/lib/connector/sabre/davaclplugin.php
+++ b/apps/dav/lib/connector/sabre/davaclplugin.php
@@ -46,7 +46,7 @@ class DavAclPlugin extends \Sabre\DAVACL\Plugin {
 
 	function checkPrivileges($uri, $privileges, $recursion = self::R_PARENT, $throwExceptions = true) {
 		$access = parent::checkPrivileges($uri, $privileges, $recursion, false);
-		if($access === false) {
+		if($access === false && $throwExceptions) {
 			/** @var INode $node */
 			$node = $this->server->tree->getNodeForPath($uri);
 
diff --git a/apps/dav/lib/server.php b/apps/dav/lib/server.php
index 05e81a1184c8823fc467326f3bea7107636e490a..f624137f3163f408cad532acff3c7cf8ac59a371 100644
--- a/apps/dav/lib/server.php
+++ b/apps/dav/lib/server.php
@@ -28,6 +28,7 @@ use OCA\DAV\Connector\FedAuth;
 use OCA\DAV\Connector\Sabre\Auth;
 use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin;
 use OCA\DAV\Connector\Sabre\DavAclPlugin;
+use OCA\DAV\Connector\Sabre\DummyGetResponsePlugin;
 use OCA\DAV\Connector\Sabre\FilesPlugin;
 use OCA\DAV\Files\CustomPropertiesBackend;
 use OCP\IRequest;
@@ -68,7 +69,13 @@ class Server {
 		$event = new SabrePluginEvent($this->server);
 		$dispatcher->dispatch('OCA\DAV\Connector\Sabre::authInit', $event);
 
-		$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\DummyGetResponsePlugin());
+		// debugging
+		if(\OC::$server->getConfig()->getSystemValue('debug', false)) {
+			$this->server->addPlugin(new \Sabre\DAV\Browser\Plugin());
+		} else {
+			$this->server->addPlugin(new DummyGetResponsePlugin());
+		}
+
 		$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin('webdav', $logger));
 		$this->server->addPlugin(new \OCA\DAV\Connector\Sabre\LockPlugin());
 		$this->server->addPlugin(new \Sabre\DAV\Sync\Plugin());