diff --git a/lib/apphelper.php b/lib/apphelper.php
new file mode 100644
index 0000000000000000000000000000000000000000..bd02f3aabfa6ccb7da868af3e62f2153b634260c
--- /dev/null
+++ b/lib/apphelper.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OC;
+
+/**
+ * TODO: Description
+ */
+class AppHelper implements \OCP\IHelper {
+	/**
+	 * Gets the content of an URL by using CURL or a fallback if it is not
+	 * installed
+	 * @param string $url the url that should be fetched
+	 * @return string the content of the webpage
+	 */
+	public function getUrlContent($url) {
+		return \OC_Util::getUrlContent($url);
+	}
+}
diff --git a/lib/l10n/factory.php b/lib/l10n/factory.php
new file mode 100644
index 0000000000000000000000000000000000000000..ba168872acdbf14acd97bb53892a11fbfade694c
--- /dev/null
+++ b/lib/l10n/factory.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OC\L10N;
+
+/**
+ * TODO: Description
+ */
+class Factory {
+	/**
+	 * cached instances
+	 */
+	protected $instances = array();
+
+	/**
+	 * get an L10N instance
+	 * @param $app string
+	 * @param $lang string|null
+	 * @return OC_L10N
+	 */
+	public function get($app) {
+		if (!isset($this->instances[$app])) {
+			$this->instances[$app] = new \OC_L10N($app);
+		}
+		return $this->instances[$app];
+	}
+
+}
diff --git a/lib/private/appframework/http/request.php b/lib/private/appframework/http/request.php
index f152956c8cf950f80cf37563009683e9cfe362bb..3e1f4ff87ed815f59d2c4d87234242f616075e8d 100644
--- a/lib/private/appframework/http/request.php
+++ b/lib/private/appframework/http/request.php
@@ -43,7 +43,8 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 		'cookies',
 		'urlParams',
 		'parameters',
-		'method'
+		'method',
+		'requesttoken',
 	);
 
 	/**
@@ -54,9 +55,9 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 	 * @param array 'files' the $_FILES array
 	 * @param array 'server' the $_SERVER array
 	 * @param array 'env' the $_ENV array
-	 * @param array 'session' the $_SESSION array
 	 * @param array 'cookies' the $_COOKIE array
 	 * @param string 'method' the request method (GET, POST etc)
+	 * @param string|false 'requesttoken' the requesttoken or false when not available
 	 * @see http://www.php.net/manual/en/reserved.variables.php
 	 */
 	public function __construct(array $vars=array()) {
@@ -354,4 +355,35 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 
 		return $this->content;
 	}
-}
+
+	/**
+	 * Checks if the CSRF check was correct
+	 * @return bool true if CSRF check passed
+	 * @see OC_Util::$callLifespan
+	 * @see OC_Util::callRegister()
+	 */
+	public function passesCSRFCheck() {
+		if($this->items['requesttoken'] === false) {
+			return false;
+		}
+
+		if (isset($this->items['get']['requesttoken'])) {
+			$token = $this->items['get']['requesttoken'];
+		} elseif (isset($this->items['post']['requesttoken'])) {
+			$token = $this->items['post']['requesttoken'];
+		} elseif (isset($this->items['server']['HTTP_REQUESTTOKEN'])) {
+			$token = $this->items['server']['HTTP_REQUESTTOKEN'];
+		} else {
+			//no token found.
+			return false;
+		}
+
+		// Check if the token is valid
+		if($token !== $this->items['requesttoken']) {
+			// Not valid
+			return false;
+		} else {
+			// Valid token
+			return true;
+		}
+	}}
diff --git a/lib/private/config.php b/lib/private/config.php
index e773e6e2eb0254a311efbba6176ecf835cf38047..72423137fa331bbbb834175b7cba58d171fc6fff 100644
--- a/lib/private/config.php
+++ b/lib/private/config.php
@@ -160,7 +160,6 @@ class Config {
 	 */
 	private function writeData() {
 		// Create a php file ...
-		$defaults = new \OC_Defaults;
 		$content = "<?php\n";
 		if ($this->debugMode) {
 			$content .= "define('DEBUG',true);\n";
@@ -172,6 +171,7 @@ class Config {
 		// Write the file
 		$result = @file_put_contents($this->configFilename, $content);
 		if (!$result) {
+			$defaults = new \OC_Defaults;
 			$url = $defaults->getDocBaseUrl() . '/server/5.0/admin_manual/installation/installation_source.html#set-the-directory-permissions';
 			throw new HintException(
 				"Can't write into config directory!",
diff --git a/lib/private/helper.php b/lib/private/helper.php
index 66e7acb407a7d69d7f7c17353f911c9af1e1b9d5..a34640d8e362ba5b9cb1965f713aba98501d7802 100644
--- a/lib/private/helper.php
+++ b/lib/private/helper.php
@@ -41,8 +41,7 @@ class OC_Helper {
 	 * Returns a url to the given app and file.
 	 */
 	public static function linkToRoute($route, $parameters = array()) {
-		$urlLinkTo = OC::getRouter()->generate($route, $parameters);
-		return $urlLinkTo;
+		return OC::$server->getURLGenerator()->linkToRoute($route, $parameters);
 	}
 
 	/**
@@ -56,32 +55,7 @@ class OC_Helper {
 	 * Returns a url to the given app and file.
 	 */
 	public static function linkTo( $app, $file, $args = array() ) {
-		if( $app != '' ) {
-			$app_path = OC_App::getAppPath($app);
-			// Check if the app is in the app folder
-			if ($app_path && file_exists($app_path . '/' . $file)) {
-				if (substr($file, -3) == 'php' || substr($file, -3) == 'css') {
-					$urlLinkTo = OC::$WEBROOT . '/index.php/apps/' . $app;
-					$urlLinkTo .= ($file != 'index.php') ? '/' . $file : '';
-				} else {
-					$urlLinkTo = OC_App::getAppWebPath($app) . '/' . $file;
-				}
-			} else {
-				$urlLinkTo = OC::$WEBROOT . '/' . $app . '/' . $file;
-			}
-		} else {
-			if (file_exists(OC::$SERVERROOT . '/core/' . $file)) {
-				$urlLinkTo = OC::$WEBROOT . '/core/' . $file;
-			} else {
-				$urlLinkTo = OC::$WEBROOT . '/' . $file;
-			}
-		}
-
-		if ($args && $query = http_build_query($args, '', '&')) {
-			$urlLinkTo .= '?' . $query;
-		}
-
-		return $urlLinkTo;
+		return OC::$server->getURLGenerator()->linkTo($app, $file, $args);
 	}
 
 	/**
@@ -107,7 +81,7 @@ class OC_Helper {
 	 * Returns a absolute url to the given app and file.
 	 */
 	public static function makeURLAbsolute($url) {
-		return OC_Request::serverProtocol() . '://' . OC_Request::serverHost() . $url;
+		return OC::$server->getURLGenerator()->makeURLAbsolute($url);
 	}
 
 	/**
@@ -156,25 +130,7 @@ class OC_Helper {
 	 * Returns the path to the image.
 	 */
 	public static function imagePath($app, $image) {
-		// Read the selected theme from the config file
-		$theme = OC_Util::getTheme();
-
-		// Check if the app is in the app folder
-		if (file_exists(OC::$SERVERROOT . "/themes/$theme/apps/$app/img/$image")) {
-			return OC::$WEBROOT . "/themes/$theme/apps/$app/img/$image";
-		} elseif (file_exists(OC_App::getAppPath($app) . "/img/$image")) {
-			return OC_App::getAppWebPath($app) . "/img/$image";
-		} elseif (!empty($app) and file_exists(OC::$SERVERROOT . "/themes/$theme/$app/img/$image")) {
-			return OC::$WEBROOT . "/themes/$theme/$app/img/$image";
-		} elseif (!empty($app) and file_exists(OC::$SERVERROOT . "/$app/img/$image")) {
-			return OC::$WEBROOT . "/$app/img/$image";
-		} elseif (file_exists(OC::$SERVERROOT . "/themes/$theme/core/img/$image")) {
-			return OC::$WEBROOT . "/themes/$theme/core/img/$image";
-		} elseif (file_exists(OC::$SERVERROOT . "/core/img/$image")) {
-			return OC::$WEBROOT . "/core/img/$image";
-		} else {
-			throw new RuntimeException('image not found: image:' . $image . ' webroot:' . OC::$WEBROOT . ' serverroot:' . OC::$SERVERROOT);
-		}
+		return OC::$server->getURLGenerator()->imagePath($app, $image);
 	}
 
 	/**
diff --git a/lib/private/l10n.php b/lib/private/l10n.php
index f93443b886a52e1794e2f39c5a14e13c2f588d7a..3e84c306dc2ff861f34c1cddf1adccef5da7a1b2 100644
--- a/lib/private/l10n.php
+++ b/lib/private/l10n.php
@@ -25,12 +25,7 @@
 /**
  * This class is for i18n and l10n
  */
-class OC_L10N {
-	/**
-	 * cached instances
-	 */
-	protected static $instances=array();
-
+class OC_L10N implements \OCP\IL10N {
 	/**
 	 * cache
 	 */
@@ -83,13 +78,10 @@ class OC_L10N {
 	 * @return OC_L10N
 	 */
 	public static function get($app, $lang=null) {
-		if(is_null($lang)) {
-			if(!isset(self::$instances[$app])) {
-				self::$instances[$app]=new OC_L10N($app);
-			}
-			return self::$instances[$app];
-		}else{
-			return new OC_L10N($app, $lang);
+		if (is_null($lang)) {
+			return OC::$server->getL10N($app);
+		} else {
+			return new \OC_L10N($app, $lang);
 		}
 	}
 
diff --git a/lib/private/server.php b/lib/private/server.php
index ef2007663c691e48859b2659b3cf453ea229a285..73a0cbd6ce606c99fa5b9ea02544408616449c91 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -22,6 +22,19 @@ class Server extends SimpleContainer implements IServerContainer {
 			return new ContactsManager();
 		});
 		$this->registerService('Request', function($c) {
+			if (isset($c['urlParams'])) {
+				$urlParams = $c['urlParams'];
+			} else {
+				$urlParams = array();
+			}
+
+			if (\OC::$session->exists('requesttoken')) {
+				$requesttoken = \OC::$session->get('requesttoken');
+			} else {
+				$requesttoken = false;
+			}
+
+
 			return new Request(
 				array(
 					'get' => $_GET,
@@ -33,7 +46,9 @@ class Server extends SimpleContainer implements IServerContainer {
 					'method' => (isset($_SERVER) && isset($_SERVER['REQUEST_METHOD']))
 						? $_SERVER['REQUEST_METHOD']
 						: null,
-					'urlParams' => $c['urlParams']
+					'params' => $params,
+					'urlParams' => $urlParams,
+					'requesttoken' => $requesttoken,
 				)
 			);
 		});
@@ -102,6 +117,15 @@ class Server extends SimpleContainer implements IServerContainer {
 		$this->registerService('AllConfig', function($c) {
 			return new \OC\AllConfig();
 		});
+		$this->registerService('L10NFactory', function($c) {
+			return new \OC\L10N\Factory();
+		});
+		$this->registerService('URLGenerator', function($c) {
+			return new \OC\URLGenerator();
+		});
+		$this->registerService('AppHelper', function($c) {
+			return new \OC\AppHelper();
+		});
 		$this->registerService('UserCache', function($c) {
 			return new UserCache();
 		});
@@ -217,6 +241,29 @@ class Server extends SimpleContainer implements IServerContainer {
 		return $this->query('AllConfig');
 	}
 
+	/**
+	 * get an L10N instance
+	 * @param $app string appid
+	 * @return \OC_L10N
+	 */
+	function getL10N($app) {
+		return $this->query('L10NFactory')->get($app);
+	}
+
+	/**
+	 * @return \OC\URLGenerator
+	 */
+	function getURLGenerator() {
+		return $this->query('URLGenerator');
+	}
+
+	/**
+	 * @return \OC\Helper
+	 */
+	function getHelper() {
+		return $this->query('AppHelper');
+	}
+
 	/**
 	 * Returns an ICache instance
 	 *
diff --git a/lib/private/util.php b/lib/private/util.php
index ae9aef69b4cd1fce4efb6a85e4571cdf46042cb0..c5b4d2ae93e4b169ecebc92db6bfe725ae3049e8 100755
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -695,29 +695,7 @@ class OC_Util {
 	 * @see OC_Util::callRegister()
 	 */
 	public static function isCallRegistered() {
-		if(!\OC::$session->exists('requesttoken')) {
-			return false;
-		}
-
-		if(isset($_GET['requesttoken'])) {
-			$token = $_GET['requesttoken'];
-		} elseif(isset($_POST['requesttoken'])) {
-			$token = $_POST['requesttoken'];
-		} elseif(isset($_SERVER['HTTP_REQUESTTOKEN'])) {
-			$token = $_SERVER['HTTP_REQUESTTOKEN'];
-		} else {
-			//no token found.
-			return false;
-		}
-
-		// Check if the token is valid
-		if($token !== \OC::$session->get('requesttoken')) {
-			// Not valid
-			return false;
-		} else {
-			// Valid token
-			return true;
-		}
+		return \OC::$server->getRequest()->passesCSRFCheck();
 	}
 
 	/**
@@ -982,9 +960,9 @@ class OC_Util {
 	 * @param string $url Url to get content
 	 * @return string of the response or false on error
 	 * This function get the content of a page via curl, if curl is enabled.
-	 * If not, file_get_element is used.
+	 * If not, file_get_contents is used.
 	 */
-	public static function getUrlContent($url){
+	public static function getUrlContent($url) {
 		if (function_exists('curl_init')) {
 			$curl = curl_init();
 
diff --git a/lib/public/ihelper.php b/lib/public/ihelper.php
new file mode 100644
index 0000000000000000000000000000000000000000..fad02f7556aa41cebde7973a1a8be6faf6494bac
--- /dev/null
+++ b/lib/public/ihelper.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OCP;
+
+/**
+ * Functions that don't have any specific interface to place
+ */
+interface IHelper {
+	/**
+	 * Gets the content of an URL by using CURL or a fallback if it is not
+	 * installed
+	 * @param string $url the url that should be fetched
+	 * @return string the content of the webpage
+	 */
+	public function getUrlContent($url);
+}
diff --git a/lib/public/il10n.php b/lib/public/il10n.php
new file mode 100644
index 0000000000000000000000000000000000000000..9cf9093d3912993faac7ec40680ef9f9717c5e05
--- /dev/null
+++ b/lib/public/il10n.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OCP;
+
+/**
+ * TODO: Description
+ */
+interface IL10N {
+	/**
+	 * @brief Translating
+	 * @param $text String The text we need a translation for
+	 * @param array $parameters default:array() Parameters for sprintf
+	 * @return \OC_L10N_String|string Translation or the same text
+	 *
+	 * Returns the translation. If no translation is found, $text will be
+	 * returned.
+	 */
+	public function t($text, $parameters = array());
+
+	/**
+	 * @brief Translating
+	 * @param $text_singular String the string to translate for exactly one object
+	 * @param $text_plural String the string to translate for n objects
+	 * @param $count Integer Number of objects
+	 * @param array $parameters default:array() Parameters for sprintf
+	 * @return \OC_L10N_String|string Translation or the same text
+	 *
+	 * Returns the translation. If no translation is found, $text will be
+	 * returned. %n will be replaced with the number of objects.
+	 *
+	 * The correct plural is determined by the plural_forms-function
+	 * provided by the po file.
+	 *
+	 */
+	public function n($text_singular, $text_plural, $count, $parameters = array());
+
+	/**
+	 * @brief Localization
+	 * @param $type Type of localization
+	 * @param $params parameters for this localization
+	 * @returns String or false
+	 *
+	 * Returns the localized data.
+	 *
+	 * Implemented types:
+	 *  - date
+	 *    - Creates a date
+	 *    - l10n-field: date
+	 *    - params: timestamp (int/string)
+	 *  - datetime
+	 *    - Creates date and time
+	 *    - l10n-field: datetime
+	 *    - params: timestamp (int/string)
+	 *  - time
+	 *    - Creates a time
+	 *    - l10n-field: time
+	 *    - params: timestamp (int/string)
+	 */
+	public function l($type, $data);
+}
diff --git a/lib/public/irequest.php b/lib/public/irequest.php
index 054f15d9eb2f01f35530eaacdb51a4c7fc97c299..45b27868d707f8252e59ee7b2b278d82000a3408 100644
--- a/lib/public/irequest.php
+++ b/lib/public/irequest.php
@@ -107,4 +107,9 @@ interface IRequest {
 	function getCookie($key);
 
 
+	/**
+	 * Checks if the CSRF check was correct
+	 * @return bool true if CSRF check passed
+	 */
+	public function passesCSRFCheck();
 }
diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php
index f4045faefeff98ed52343d0b63b86a02b055b473..3afb2b6599d37a101116af13b387a4f59ed0081f 100644
--- a/lib/public/iservercontainer.php
+++ b/lib/public/iservercontainer.php
@@ -101,6 +101,23 @@ interface IServerContainer {
 	 */
 	function getConfig();
 
+	/**
+	 * get an L10N instance
+	 * @param $app string appid
+	 * @return \OCP\IL10N
+	 */
+	function getL10N($app);
+
+	/**
+	 * @return \OCP\IURLGenerator
+	 */
+	function getURLGenerator();
+
+	/**
+	 * @return \OCP\IHelper
+	 */
+	function getHelper();
+
 	/**
 	 * Returns an ICache instance
 	 *
diff --git a/lib/public/iurlgenerator.php b/lib/public/iurlgenerator.php
new file mode 100644
index 0000000000000000000000000000000000000000..4eb4c0f83127417175c057cd1e74370c2c23cd0a
--- /dev/null
+++ b/lib/public/iurlgenerator.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OCP;
+
+/**
+ * Class to generate URLs
+ */
+interface IURLGenerator {
+	/**
+	 * Returns the URL for a route
+	 * @param string $routeName the name of the route
+	 * @param array $arguments an array with arguments which will be filled into the url
+	 * @return string the url
+	 */
+	public function linkToRoute($routeName, $arguments = array());
+
+	/**
+	 * Returns an URL for an image or file
+	 * @param string $appName the name of the app
+	 * @param string $file the name of the file
+	 * @return string the url
+	 */
+	public function linkTo($appName, $file);
+
+	/**
+	 * Returns the link to an image, like linkTo but only with prepending img/
+	 * @param string $appName the name of the app
+	 * @param string $file the name of the file
+	 * @return string the url
+	 */
+	public function imagePath($appName, $file);
+
+
+	/**
+	 * Makes an URL absolute
+	 * @param string $url the url in the owncloud host
+	 * @return string the absolute version of the url
+	 */
+	public function getAbsoluteURL($url);
+}
diff --git a/lib/urlgenerator.php b/lib/urlgenerator.php
new file mode 100644
index 0000000000000000000000000000000000000000..1db4c36cc58dbb559f075369446a8c6830b8bd98
--- /dev/null
+++ b/lib/urlgenerator.php
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ *
+ */
+
+namespace OC;
+
+/**
+ * Class to generate URLs
+ */
+class URLGenerator {
+	/**
+	 * @brief Creates an url using a defined route
+	 * @param $route
+	 * @param array $parameters
+	 * @return
+	 * @internal param array $args with param=>value, will be appended to the returned url
+	 * @returns the url
+	 *
+	 * Returns a url to the given app and file.
+	 */
+	public function linkToRoute($route, $parameters = array()) {
+		$urlLinkTo = \OC::getRouter()->generate($route, $parameters);
+		return $urlLinkTo;
+	}
+
+	/**
+	 * @brief Creates an url
+	 * @param string $app app
+	 * @param string $file file
+	 * @param array $args array with param=>value, will be appended to the returned url
+	 *    The value of $args will be urlencoded
+	 * @return string the url
+	 *
+	 * Returns a url to the given app and file.
+	 */
+	public function linkTo( $app, $file, $args = array() ) {
+		if( $app != '' ) {
+			$app_path = \OC_App::getAppPath($app);
+			// Check if the app is in the app folder
+			if ($app_path && file_exists($app_path . '/' . $file)) {
+				if (substr($file, -3) == 'php' || substr($file, -3) == 'css') {
+					$urlLinkTo = \OC::$WEBROOT . '/index.php/apps/' . $app;
+					$urlLinkTo .= ($file != 'index.php') ? '/' . $file : '';
+				} else {
+					$urlLinkTo = \OC_App::getAppWebPath($app) . '/' . $file;
+				}
+			} else {
+				$urlLinkTo = \OC::$WEBROOT . '/' . $app . '/' . $file;
+			}
+		} else {
+			if (file_exists(\OC::$SERVERROOT . '/core/' . $file)) {
+				$urlLinkTo = \OC::$WEBROOT . '/core/' . $file;
+			} else {
+				$urlLinkTo = \OC::$WEBROOT . '/' . $file;
+			}
+		}
+
+		if ($args && $query = http_build_query($args, '', '&')) {
+			$urlLinkTo .= '?' . $query;
+		}
+
+		return $urlLinkTo;
+	}
+
+	/**
+	 * @brief Creates path to an image
+	 * @param string $app app
+	 * @param string $image image name
+	 * @return string the url
+	 *
+	 * Returns the path to the image.
+	 */
+	public function imagePath($app, $image) {
+		// Read the selected theme from the config file
+		$theme = \OC_Util::getTheme();
+
+		// Check if the app is in the app folder
+		if (file_exists(\OC::$SERVERROOT . "/themes/$theme/apps/$app/img/$image")) {
+			return \OC::$WEBROOT . "/themes/$theme/apps/$app/img/$image";
+		} elseif (file_exists(\OC_App::getAppPath($app) . "/img/$image")) {
+			return \OC_App::getAppWebPath($app) . "/img/$image";
+		} elseif (!empty($app) and file_exists(\OC::$SERVERROOT . "/themes/$theme/$app/img/$image")) {
+			return \OC::$WEBROOT . "/themes/$theme/$app/img/$image";
+		} elseif (!empty($app) and file_exists(\OC::$SERVERROOT . "/$app/img/$image")) {
+			return \OC::$WEBROOT . "/$app/img/$image";
+		} elseif (file_exists(\OC::$SERVERROOT . "/themes/$theme/core/img/$image")) {
+			return \OC::$WEBROOT . "/themes/$theme/core/img/$image";
+		} elseif (file_exists(\OC::$SERVERROOT . "/core/img/$image")) {
+			return \OC::$WEBROOT . "/core/img/$image";
+		} else {
+			throw new RuntimeException('image not found: image:' . $image . ' webroot:' . \OC::$WEBROOT . ' serverroot:' . \OC::$SERVERROOT);
+		}
+	}
+
+	/**
+	 * @brief Makes an $url absolute
+	 * @param string $url the url
+	 * @return string the absolute url
+	 *
+	 * Returns a absolute url to the given app and file.
+	 */
+	public function makeURLAbsolute($url) {
+		return \OC_Request::serverProtocol() . '://' . \OC_Request::serverHost() . $url;
+	}
+
+}