diff --git a/lib/appframework/controller/controller.php b/lib/appframework/controller/controller.php
index a7498ba0e1e7c579b706449d217e0f88c4c16ac2..0ea0a38cc090e36906de3a9782edc603a8567481 100644
--- a/lib/appframework/controller/controller.php
+++ b/lib/appframework/controller/controller.php
@@ -106,16 +106,6 @@ abstract class Controller {
 	}
 
 
-	/**
-	 * Shortcut for getting session variables
-	 * @param string $key the key that will be taken from the $_SESSION array
-	 * @return array the value in the $_SESSION element
-	 */
-	public function session($key) {
-		return $this->request->getSession($key);
-	}
-
-
 	/**
 	 * Shortcut for getting cookie variables
 	 * @param string $key the key that will be taken from the $_COOKIE array
diff --git a/lib/appframework/http/request.php b/lib/appframework/http/request.php
index 4f1775182a1e89da5b23d5656a7644d1dbdc3357..34605acdfead8b7073f19702fd6965799e1b776c 100644
--- a/lib/appframework/http/request.php
+++ b/lib/appframework/http/request.php
@@ -33,16 +33,15 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 
 	protected $items = array();
 	protected $allowedKeys = array(
-		'get', 
-		'post', 
-		'files', 
-		'server', 
-		'env', 
-		'session', 
-		'cookies', 
-		'urlParams', 
-		'params', 
-		'parameters', 
+		'get',
+		'post',
+		'files',
+		'server',
+		'env',
+		'cookies',
+		'urlParams',
+		'params',
+		'parameters',
 		'method'
 	);
 
@@ -156,7 +155,6 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 			case 'files':
 			case 'server':
 			case 'env':
-			case 'session':
 			case 'cookies':
 			case 'parameters':
 			case 'params':
@@ -229,8 +227,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 	 * @param mixed $default If the key is not found, this value will be returned
 	 * @return mixed the content of the array
 	 */
-	public function getParam($key, $default = null)
-	{
+	public function getParam($key, $default = null) {
 		return isset($this->parameters[$key])
 			? $this->parameters[$key]
 			: $default;
@@ -241,8 +238,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 	 * (as GET or POST) or throuh the URL by the route
 	 * @return array the array with all parameters
 	 */
-	public function getParams()
-	{
+	public function getParams() {
 		return $this->parameters;
 	}
 
@@ -250,8 +246,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 	 * Returns the method of the request
 	 * @return string the method of the request (POST, GET, etc)
 	 */
-	public function getMethod()
-	{
+	public function getMethod() {
 		return $this->method;
 	}
 
@@ -260,8 +255,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 	 * @param string $key the key that will be taken from the $_FILES array
 	 * @return array the file in the $_FILES element
 	 */
-	public function getUploadedFile($key)
-	{
+	public function getUploadedFile($key) {
 		return isset($this->files[$key]) ? $this->files[$key] : null;
 	}
 
@@ -270,28 +264,16 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 	 * @param string $key the key that will be taken from the $_ENV array
 	 * @return array the value in the $_ENV element
 	 */
-	public function getEnv($key)
-	{
+	public function getEnv($key) {
 		return isset($this->env[$key]) ? $this->env[$key] : null;
 	}
 
-	/**
-	 * Shortcut for getting session variables
-	 * @param string $key the key that will be taken from the $_SESSION array
-	 * @return array the value in the $_SESSION element
-	 */
-	function getSession($key)
-	{
-		return isset($this->session[$key]) ? $this->session[$key] : null;
-	}
-
 	/**
 	 * Shortcut for getting cookie variables
 	 * @param string $key the key that will be taken from the $_COOKIE array
 	 * @return array the value in the $_COOKIE element
 	 */
-	function getCookie($key)
-	{
+	function getCookie($key) {
 		return isset($this->cookies[$key]) ? $this->cookies[$key] : null;
 	}
 
@@ -304,8 +286,7 @@ class Request implements \ArrayAccess, \Countable, IRequest {
 	 *
 	 * @throws \LogicException
 	 */
-	function getContent($asResource = false)
-	{
+	function getContent($asResource = false) {
 		return null;
 //		if (false === $this->content || (true === $asResource && null !== $this->content)) {
 //			throw new \LogicException('getContent() can only be called once when using the resource return type.');
diff --git a/lib/public/irequest.php b/lib/public/irequest.php
index cd39855950bc875324dbb8e5e8dbf782829c016c..9f335b06f2ac85093f6ff92f6749d8dbd48d2129 100644
--- a/lib/public/irequest.php
+++ b/lib/public/irequest.php
@@ -76,15 +76,6 @@ interface IRequest {
 	public function getEnv($key);
 
 
-	/**
-	 * Shortcut for getting session variables
-	 *
-	 * @param string $key the key that will be taken from the $_SESSION array
-	 * @return array the value in the $_SESSION element
-	 */
-	function getSession($key);
-
-
 	/**
 	 * Shortcut for getting cookie variables
 	 *
diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php
index d88330698dc766dc1709f4846e4e85fafff28451..ec7212b306e2777666aec24178847e2b751a5f6b 100644
--- a/lib/public/iservercontainer.php
+++ b/lib/public/iservercontainer.php
@@ -62,4 +62,11 @@ interface IServerContainer {
 	 */
 	function getRootFolder();
 
+	/**
+	 * Returns the current session
+	 *
+	 * @return \OCP\ISession
+	 */
+	function getSession();
+
 }
diff --git a/lib/public/isession.php b/lib/public/isession.php
new file mode 100644
index 0000000000000000000000000000000000000000..0a77b0c823b042cef5d840bc66723bcf4adc2bea
--- /dev/null
+++ b/lib/public/isession.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Copyright (c) 2013 Thomas Tanghus (thomas@tanghus.net)
+ * @author Thomas Tanghus
+ * @author Robin Appelman
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCP;
+
+/**
+ * Interface ISession
+ *
+ * wrap PHP's internal session handling into the ISession interface
+ */
+interface ISession {
+
+	/**
+	 * Set a value in the session
+	 *
+	 * @param string $key
+	 * @param mixed $value
+	 */
+	public function set($key, $value);
+
+	/**
+	 * Get a value from the session
+	 *
+	 * @param string $key
+	 * @return mixed should return null if $key does not exist
+	 */
+	public function get($key);
+
+	/**
+	 * Check if a named key exists in the session
+	 *
+	 * @param string $key
+	 * @return bool
+	 */
+	public function exists($key);
+
+	/**
+	 * Remove a $key/$value pair from the session
+	 *
+	 * @param string $key
+	 */
+	public function remove($key);
+
+	/**
+	 * Reset and recreate the session
+	 */
+	public function clear();
+
+}
diff --git a/lib/server.php b/lib/server.php
index 9e87bd3190d514a6cace4cd895ed508edbffca43..0eee3e0f73a808ca061aef7150dd4cb622ebe4b5 100644
--- a/lib/server.php
+++ b/lib/server.php
@@ -36,7 +36,6 @@ class Server extends SimpleContainer implements IServerContainer {
 					'files' => $_FILES,
 					'server' => $_SERVER,
 					'env' => $_ENV,
-					'session' => $_SESSION,
 					'cookies' => $_COOKIE,
 					'method' => (isset($_SERVER) && isset($_SERVER['REQUEST_METHOD']))
 						? $_SERVER['REQUEST_METHOD']
@@ -97,4 +96,14 @@ class Server extends SimpleContainer implements IServerContainer {
 	{
 		return $this->query('RootFolder');
 	}
+
+	/**
+	 * Returns the current session
+	 *
+	 * @return \OCP\ISession
+	 */
+	function getSession() {
+		return \OC::$session;
+	}
+
 }
diff --git a/lib/session/session.php b/lib/session/session.php
index 55515f57a87d186adb11c407655b50f943350eda..c55001eccaca570e9381679646be0526855580ee 100644
--- a/lib/session/session.php
+++ b/lib/session/session.php
@@ -8,7 +8,7 @@
 
 namespace OC\Session;
 
-abstract class Session implements \ArrayAccess {
+abstract class Session implements \ArrayAccess, \OCP\ISession {
 	/**
 	 * $name serves as a namespace for the session keys
 	 *
diff --git a/tests/lib/appframework/controller/ControllerTest.php b/tests/lib/appframework/controller/ControllerTest.php
index 246371d249ccfdd9674e199a130943b888a98795..4441bddfca9f4685385744aafa29671592222843 100644
--- a/tests/lib/appframework/controller/ControllerTest.php
+++ b/tests/lib/appframework/controller/ControllerTest.php
@@ -152,9 +152,4 @@ class ControllerTest extends \PHPUnit_Framework_TestCase {
 		$this->assertEquals('daheim', $this->controller->env('PATH'));
 	}
 
-	public function testGetSessionVariable(){
-		$this->assertEquals('kein', $this->controller->session('sezession'));
-	}
-
-
 }