diff --git a/apps/calendar/appinfo/app.php b/apps/calendar/appinfo/app.php
index 174bc009e459dff0dda6b3718eb93718a9bbf1b9..0968737219a31adbfc7ae8c587c58f76c78166c5 100644
--- a/apps/calendar/appinfo/app.php
+++ b/apps/calendar/appinfo/app.php
@@ -8,12 +8,13 @@ if(version_compare(PHP_VERSION, '5.3.0', '>=')){
 	OC::$CLASSPATH['OC_Connector_Sabre_CalDAV'] = 'apps/calendar/lib/connector_sabre.php';
 	OC::$CLASSPATH['OC_Search_Provider_Calendar'] = 'apps/calendar/lib/search.php';
 	OC_HOOK::connect('OC_User', 'post_deleteUser', 'OC_Calendar_Hooks', 'deleteUser');
+	OC_Hook::connect('OC_DAV', 'initialize', 'OC_Calendar_Hooks', 'initializeCalDAV');
 	OC_Util::addScript('calendar','loader');
-	OC_App::register( array( 
+	OC_App::register( array(
 	  'order' => 10,
 	  'id' => 'calendar',
 	  'name' => 'Calendar' ));
-	OC_App::addNavigationEntry( array( 
+	OC_App::addNavigationEntry( array(
 	  'id' => 'calendar_index',
 	  'order' => 10,
 	  'href' => OC_Helper::linkTo( 'calendar', 'index.php' ),
diff --git a/apps/calendar/lib/hooks.php b/apps/calendar/lib/hooks.php
index 14f96bb5fe128bfc55f0d9f2bc0df0d0988b99ec..54f1680a36e55d4a68427902ca3ce2816cc8b1d5 100644
--- a/apps/calendar/lib/hooks.php
+++ b/apps/calendar/lib/hooks.php
@@ -17,11 +17,24 @@ class OC_Calendar_Hooks{
 	 */
 	public static function deleteUser($parameters) {
 		$calendars = OC_Calendar_Calendar::allCalendars($parameters['uid']);
-		
+
 		foreach($calendars as $calendar) {
 			OC_Calendar_Calendar::deleteCalendar($calendar['id']);
 		}
 
 		return true;
 	}
+
+	/**
+	 * @brief Adds the CardDAV resource to the DAV server
+	 * @param paramters parameters from initialize-Hook
+	 * @return array
+	 */
+	public static function initializeCalDAV($parameters){
+		// We need a backend, the root node and the caldav plugin
+		$parameters['backends']['caldav'] = new OC_Connector_Sabre_CalDAV();
+		$parameters['nodes'][] = new Sabre_CalDAV_CalendarRootNode($parameters['backends']['principal'], $parameters['backends']['caldav']);
+		$parameters['plugins'][] = new Sabre_CalDAV_Plugin();
+		return true;
+	}
 }
diff --git a/apps/contacts/appinfo/app.php b/apps/contacts/appinfo/app.php
index 63833dd5cd60205fd9292ae9f3950c276c21cc18..85c383c4c3224a88cf54e7da546272a67e1cd406 100644
--- a/apps/contacts/appinfo/app.php
+++ b/apps/contacts/appinfo/app.php
@@ -8,6 +8,7 @@ OC::$CLASSPATH['OC_Search_Provider_Contacts'] = 'apps/contacts/lib/search.php';
 OC_HOOK::connect('OC_User', 'post_deleteUser', 'OC_Contacts_Hooks', 'deleteUser');
 OC_HOOK::connect('OC_Calendar', 'getEvents', 'OC_Contacts_Hooks', 'getBirthdayEvents');
 OC_HOOK::connect('OC_Calendar', 'getSources', 'OC_Contacts_Hooks', 'getCalenderSources');
+OC_Hook::connect('OC_DAV', 'initialize', 'OC_Contacts_Hooks', 'initializeCardDAV');
 
 OC_App::register( array(
   'order' => 10,
diff --git a/apps/contacts/lib/hooks.php b/apps/contacts/lib/hooks.php
index b858c4a5a48a91e6bb0444257ccef65e8f6e5d04..2fe4afe716b2e68acd2b97429513565c79bc2496 100644
--- a/apps/contacts/lib/hooks.php
+++ b/apps/contacts/lib/hooks.php
@@ -39,6 +39,18 @@ class OC_Contacts_Hooks{
 		return true;
 	}
 
+	/**
+	 * @brief Adds the CardDAV resource to the DAV server
+	 * @param paramters parameters from initialize-Hook
+	 * @return array
+	 */
+	static public function initializeCardDAV($parameters){
+		// We need a backend, the root node and the carddav plugin
+		$parameters['backends']['carddav'] = new OC_Connector_Sabre_CardDAV();
+		$parameters['nodes'][] = new Sabre_CardDAV_AddressBookRoot($parameters['backends']['principal'], $parameters['backends']['carddav']);
+		$parameters['plugins'][] = new Sabre_CardDAV_Plugin();
+		return true;
+
 	static public function getCalenderSources($parameters) {
 		$base_url = OC_Helper::linkTo('calendar', 'ajax/events.php').'?calendar_id=';
 		foreach(OC_Contacts_Addressbook::all(OC_User::getUser()) as $addressbook) {
diff --git a/dav.php b/dav.php
new file mode 100644
index 0000000000000000000000000000000000000000..78e2711aec84495b36a8837ac0d44a66f43cdb3c
--- /dev/null
+++ b/dav.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+* ownCloud
+*
+* @author Jakob Sack
+* @copyright 2012 Jakob Sack owncloud@jakobsack.de
+*
+* 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/>.
+*
+*/
+
+require_once('lib/base.php');
+
+// Backends we always need (auth, principal and files)
+$backends = array(
+	'auth' => new OC_Connector_Sabre_Auth(),
+	'principal' => new OC_Connector_Sabre_Principal()
+);
+
+// Root nodes
+$nodes = array(
+	new Sabre_CalDAV_Principal_Collection($backends['principal'])
+);
+
+// Plugins
+$plugins = array(
+	new Sabre_DAV_Auth_Plugin($backends['auth'],'ownCloud'),
+	new Sabre_DAVACL_Plugin(),
+	new Sabre_DAV_Browser_Plugin(false) // Show something in the Browser, but no upload
+);
+
+// Load the plugins etc we need for usual file sharing
+$backends['lock'] = new OC_Connector_Sabre_Locks();
+$plugins[] = new Sabre_DAV_Locks_Plugin($backends['lock']);
+// Add a RESTful user directory
+// /files/$username/
+if( OC_User::isLoggedIn()){
+	$currentuser = OC_User::getUser();
+	$files = new Sabre_DAV_SimpleCollection('files');
+	foreach( OC_User::getUsers() as $username ){
+		if( $username == $currentuser ){
+			$public = new OC_Connector_Sabre_Directory('.');
+			$files->addChild( new Sabre_DAV_SimpleCollection( $username, $public->getChildren()));
+		}
+		else{
+			$files->addChild(new Sabre_DAV_SimpleCollection( $username ));
+		}
+	}
+	$nodes[] = $files;
+}
+
+// Get the other plugins and nodes
+OC_Hook::emit( 'OC_DAV', 'initialize', array( 'backends' => &$backends, 'nodes' => &$nodes, 'plugins' => &$plugins ));
+
+// Fire up server
+$server = new Sabre_DAV_Server($nodes);
+$server->setBaseUri(OC::$WEBROOT.'/dav.php');
+
+// Load additional plugins
+foreach( $plugins as &$plugin ){
+	$server->addPlugin( $plugin );
+} unset( $plugin ); // Always do this after foreach with references!
+
+// And off we go!
+$server->exec();