diff --git a/lib/private/Avatar.php b/lib/private/Avatar.php
index 9e8bd0136c20065535273f536a1328aec16847d8..e7fd4da4615ff4945a43cf0bef11d1befd89bbe9 100644
--- a/lib/private/Avatar.php
+++ b/lib/private/Avatar.php
@@ -33,6 +33,7 @@ use OCP\Files\Folder;
 use OCP\Files\File;
 use OCP\Files\NotFoundException;
 use OCP\Files\NotPermittedException;
+use OCP\Files\SimpleFS\ISimpleFolder;
 use OCP\IAvatar;
 use OCP\IConfig;
 use OCP\IImage;
@@ -45,7 +46,7 @@ use OCP\ILogger;
  */
 
 class Avatar implements IAvatar {
-	/** @var Folder */
+	/** @var ISimpleFolder */
 	private $folder;
 	/** @var IL10N */
 	private $l;
@@ -59,13 +60,13 @@ class Avatar implements IAvatar {
 	/**
 	 * constructor
 	 *
-	 * @param Folder $folder The folder where the avatars are
+	 * @param ISimpleFolder $folder The folder where the avatars are
 	 * @param IL10N $l
 	 * @param User $user
 	 * @param ILogger $logger
 	 * @param IConfig $config
 	 */
-	public function __construct(Folder $folder,
+	public function __construct(ISimpleFolder $folder,
 								IL10N $l,
 								$user,
 								ILogger $logger,
diff --git a/lib/private/Files/AppData/AppData.php b/lib/private/Files/AppData/AppData.php
new file mode 100644
index 0000000000000000000000000000000000000000..f2180a48e617e163fcd719a583a393ae2b674d22
--- /dev/null
+++ b/lib/private/Files/AppData/AppData.php
@@ -0,0 +1,128 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Files\AppData;
+
+use OC\Files\SimpleFS\SimpleFolder;
+use OCP\Files\IAppData;
+use OCP\Files\IRootFolder;
+use OCP\Files\Folder;
+use OC\SystemConfig;
+use OCP\Files\NotFoundException;
+use OCP\Files\NotPermittedException;
+
+class AppData extends SimpleRoot implements IAppData {
+
+	/** @var IRootFolder */
+	private $rootFolder;
+
+	/** @var SystemConfig */
+	private $config;
+
+	/** @var string */
+	private $appId;
+
+	/**
+	 * AppData constructor.
+	 *
+	 * @param IRootFolder $rootFolder
+	 * @param SystemConfig $systemConfig
+	 * @param string $appId
+	 */
+	public function __construct(IRootFolder $rootFolder,
+								SystemConfig $systemConfig,
+								$appId) {
+
+		$this->rootFolder = $rootFolder;
+		$this->config = $systemConfig;
+		$this->appId = $appId;
+	}
+
+	/**
+	 * @return Folder
+	 * @throws \RuntimeException
+	 */
+	private function getAppDataFolder() {
+		if ($this->folder === null) {
+			$instanceId = $this->config->getValue('instanceid', null);
+			if ($instanceId === null) {
+				throw new \RuntimeException('no instance id!');
+			}
+
+			$name = 'appdata_' . $instanceId;
+
+			try {
+				$appDataFolder = $this->rootFolder->get($name);
+			} catch (NotFoundException $e) {
+				try {
+					$appDataFolder = $this->rootFolder->newFolder($name);
+				} catch (NotPermittedException $e) {
+					throw new \RuntimeException('Could not get appdata folder');
+				}
+			}
+
+			try {
+				$appDataFolder = $appDataFolder->get($this->appId);
+			} catch (NotFoundException $e) {
+				try {
+					$appDataFolder = $appDataFolder->newFolder($this->appId);
+				} catch (NotPermittedException $e) {
+					throw new \RuntimeException('Could not get appdata folder for ' . $this->appId);
+				}
+			}
+
+			$this->folder = $appDataFolder;
+		}
+
+		return $this->folder;
+	}
+
+	/**
+	 * @inheritdoc
+	 */
+	public function getFolder($name) {
+		$node = $this->getAppDataFolder()->get($name);
+
+		/** @var Folder $node */
+		return new SimpleFolder($node);
+	}
+
+	/**
+	 * @inheritdoc
+	 */
+	public function newFolder($name) {
+		$folder = $this->getAppDataFolder()->newFolder($name);
+
+		return new SimpleFolder($folder);
+	}
+
+	public function getDirectoryListing() {
+		$listing = $this->getAppDataFolder()->getDirectoryListing();
+
+		$fileListing = array_map(function(Node $file) {
+			return new SimpleFolder($file);
+		}, $listing);
+
+		return $fileListing;
+	}
+}
diff --git a/lib/private/Files/AppData/Factory.php b/lib/private/Files/AppData/Factory.php
new file mode 100644
index 0000000000000000000000000000000000000000..85c757337964c4e226b2ac585eadc0d3e87f4ee1
--- /dev/null
+++ b/lib/private/Files/AppData/Factory.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OC\Files\AppData;
+
+use OC\SystemConfig;
+use OCP\Files\IRootFolder;
+
+class Factory {
+
+	/** @var IRootFolder */
+	private $rootFolder;
+
+	/** @var SystemConfig */
+	private $config;
+
+	public function __construct(IRootFolder $rootFolder,
+								SystemConfig $systemConfig) {
+
+		$this->rootFolder = $rootFolder;
+		$this->config = $systemConfig;
+	}
+
+	/**
+	 * @param string $appId
+	 * @return AppData
+	 */
+	public function get($appId) {
+		return new AppData($this->rootFolder, $this->config, $appId);
+	}
+}
diff --git a/lib/private/Files/SimpleFS/SimpleFile.php b/lib/private/Files/SimpleFS/SimpleFile.php
new file mode 100644
index 0000000000000000000000000000000000000000..5eadfd98b6044e92320714884f23168afe925b01
--- /dev/null
+++ b/lib/private/Files/SimpleFS/SimpleFile.php
@@ -0,0 +1,115 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OC\Files\SimpleFS;
+
+use OCP\Files\File;
+use OCP\Files\NotPermittedException;
+use OCP\Files\SimpleFS\ISimpleFile;
+
+class SimpleFile implements ISimpleFile  {
+
+	/** @var File $file */
+	private $file;
+
+	/**
+	 * File constructor.
+	 *
+	 * @param File $file
+	 */
+	public function __construct(File $file) {
+		$this->file = $file;
+	}
+
+	/**
+	 * Get the name
+	 *
+	 * @return string
+	 */
+	public function getName() {
+		return $this->file->getName();
+	}
+
+	/**
+	 * Get the size in bytes
+	 *
+	 * @return int
+	 */
+	public function getSize() {
+		return $this->file->getSize();
+	}
+
+	/**
+	 * Get the ETag
+	 *
+	 * @return string
+	 */
+	public function getETag() {
+		return $this->file->getEtag();
+	}
+
+	/**
+	 * Get the last modification time
+	 *
+	 * @return int
+	 */
+	public function getMTime() {
+		return $this->file->getMTime();
+	}
+
+	/**
+	 * Get the content
+	 *
+	 * @return string
+	 */
+	public function getContent() {
+		return $this->file->getContent();
+	}
+
+	/**
+	 * Overwrite the file
+	 *
+	 * @param string $data
+	 * @throws NotPermittedException
+	 */
+	public function putContent($data) {
+		$this->file->putContent($data);
+	}
+
+	/**
+	 * Delete the file
+	 *
+	 * @throws NotPermittedException
+	 */
+	public function delete() {
+		$this->file->delete();
+	}
+
+	/**
+	 * Get the MimeType
+	 *
+	 * @return string
+	 */
+	public function getMimeType() {
+		return $this->file->getMimeType();
+	}
+}
diff --git a/lib/private/Files/SimpleFS/SimpleFolder.php b/lib/private/Files/SimpleFS/SimpleFolder.php
new file mode 100644
index 0000000000000000000000000000000000000000..4ee61f0eec9557d13a5de00b631be1debee7810b
--- /dev/null
+++ b/lib/private/Files/SimpleFS/SimpleFolder.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OC\Files\SimpleFS;
+
+use OCP\Files\Folder;
+use OCP\Files\Node;
+use OCP\Files\SimpleFS\ISimpleFolder;
+
+class SimpleFolder implements ISimpleFolder   {
+
+	/** @var Folder */
+	private $folder;
+
+	/**
+	 * Folder constructor.
+	 *
+	 * @param Folder $folder
+	 */
+	public function __construct(Folder $folder) {
+		$this->folder = $folder;
+	}
+
+	public function getName() {
+		return $this->folder->getName();
+	}
+
+	public function getDirectoryListing() {
+		$listing = $this->folder->getDirectoryListing();
+
+		$fileListing = array_map(function(Node $file) {
+			return new SimpleFile($file);
+		}, $listing);
+
+		return $fileListing;
+	}
+
+	public function delete() {
+		$this->folder->delete();
+	}
+
+	public function getFile($name) {
+		$file = $this->folder->get($name);
+
+		return new SimpleFile($file);
+	}
+
+	public function newFile($name) {
+		$file = $this->folder->newFile($name);
+
+		return new SimpleFile($file);
+	}
+}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 494387ab6ca65277fa96de2da45a82cdc275cbd1..838393b8507d231d7826c0af7dd38baae2aabbf7 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -742,6 +742,12 @@ class Server extends ServerContainer implements IServerContainer {
 			);
 			return $manager;
 		});
+		$this->registerService(\OC\Files\AppData\Factory::class, function (Server $c) {
+			return new \OC\Files\AppData\Factory(
+				$c->getRootFolder(),
+				$c->getSystemConfig()
+			);
+		});
 	}
 
 	/**
@@ -1456,4 +1462,13 @@ class Server extends ServerContainer implements IServerContainer {
 	public function getSettingsManager() {
 		return $this->query('SettingsManager');
 	}
+
+	/**
+	 * @return \OCP\Files\IAppData
+	 */
+	public function getAppDataDir($app) {
+		/** @var \OC\Files\AppData\Factory $factory */
+		$factory = $this->query(\OC\Files\AppData\Factory::class);
+		return $factory->get($app);
+	}
 }
diff --git a/lib/public/AppFramework/Http/FileDisplayResponse.php b/lib/public/AppFramework/Http/FileDisplayResponse.php
index 22171e2b3797c5a19521f842d4dfcc2934b34e68..03a6fbec2dd271ba2226e8c3ea09ca936d7b882a 100644
--- a/lib/public/AppFramework/Http/FileDisplayResponse.php
+++ b/lib/public/AppFramework/Http/FileDisplayResponse.php
@@ -23,7 +23,6 @@
 namespace OCP\AppFramework\Http;
 
 use OCP\AppFramework\Http;
-use OCP\Files\File;
 
 /**
  * Class FileDisplayResponse
@@ -33,18 +32,18 @@ use OCP\Files\File;
  */
 class FileDisplayResponse extends Response implements ICallbackResponse {
 
-	/** @var File */
+	/** @var \OCP\Files\File|\OCP\Files\SimpleFS\ISimpleFile */
 	private $file;
 
 	/**
 	 * FileDisplayResponse constructor.
 	 *
-	 * @param File $file
+	 * @param \OCP\Files\File|\OCP\Files\SimpleFS\ISimpleFile $file
 	 * @param int $statusCode
 	 * @param array $headers
 	 * @since 9.2.0
 	 */
-	public function __construct(File $file, $statusCode=Http::STATUS_OK,
+	public function __construct($file, $statusCode=Http::STATUS_OK,
 								$headers=[]) {
 		$this->file = $file;
 		$this->setStatus($statusCode);
diff --git a/lib/public/Files/IAppData.php b/lib/public/Files/IAppData.php
new file mode 100644
index 0000000000000000000000000000000000000000..92e54fee3663b50f45871ac1a3d95cff6c2ea57a
--- /dev/null
+++ b/lib/public/Files/IAppData.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\Files;
+
+use OCP\Files\SimpleFS\ISimpleRoot;
+
+/**
+ * Interface IAppData
+ *
+ * @package OCP\Files
+ * @since 9.2.0
+ * @internal This interface is experimental and might change for NC12
+ */
+interface IAppData extends ISimpleRoot  {
+	
+}
diff --git a/lib/public/Files/SimpleFS/ISimpleFile.php b/lib/public/Files/SimpleFS/ISimpleFile.php
new file mode 100644
index 0000000000000000000000000000000000000000..efd682e7855f360d833df95cb7c5ba3aff0e53d9
--- /dev/null
+++ b/lib/public/Files/SimpleFS/ISimpleFile.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\Files\SimpleFS;
+
+use OCP\Files\NotPermittedException;
+
+/**
+ * Interface ISimpleFile
+ *
+ * @package OCP\Files\SimpleFS
+ * @since 9.2.0
+ * @internal This interface is experimental and might change for NC12
+ */
+interface ISimpleFile {
+
+	/**
+	 * Get the name
+	 *
+	 * @return string
+	 * @since 9.2.0
+	 */
+	public function getName();
+
+	/**
+	 * Get the size in bytes
+	 *
+	 * @return int
+	 * @since 9.2.0
+	 */
+	public function getSize();
+
+	/**
+	 * Get the ETag
+	 *
+	 * @return string
+	 * @since 9.2.0
+	 */
+	public function getETag();
+
+	/**
+	 * Get the last modification time
+	 *
+	 * @return int
+	 * @since 9.2.0
+	 */
+	public function getMTime();
+
+	/**
+	 * Get the content
+	 *
+	 * @return string
+	 * @since 9.2.0
+	 */
+	public function getContent();
+
+	/**
+	 * Overwrite the file
+	 *
+	 * @param string $data
+	 * @throws NotPermittedException
+	 * @since 9.2.0
+	 */
+	public function putContent($data);
+
+	/**
+	 * Delete the file
+	 *
+	 * @throws NotPermittedException
+	 * @since 9.2.0
+	 */
+	public function delete();
+
+	/**
+	 * Get the MimeType
+	 *
+	 * @return string
+	 * @since 9.2.0
+	 */
+	public function getMimeType();
+}
diff --git a/lib/public/Files/SimpleFS/ISimpleFolder.php b/lib/public/Files/SimpleFS/ISimpleFolder.php
new file mode 100644
index 0000000000000000000000000000000000000000..c8d7f060fbeebc7c78b131c482b0016d1cabd3b8
--- /dev/null
+++ b/lib/public/Files/SimpleFS/ISimpleFolder.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\Files\SimpleFS;
+
+use OCP\Files\NotFoundException;
+use OCP\Files\NotPermittedException;
+
+/**
+ * Interface ISimpleFolder
+ *
+ * @package OCP\Files\SimpleFS
+ * @since 9.2.0
+ * @internal This interface is experimental and might change for NC12
+ */
+interface ISimpleFolder {
+	/**
+	 * Get all the files in a folder
+	 *
+	 * @return ISimpleFile[]
+	 * @since 9.2.0
+	 */
+	public function getDirectoryListing();
+
+	/**
+	 * Check if a file with $name exists
+	 *
+	 * @param string $name
+	 * @return bool
+	 * @since 9.2.0
+	 */
+	public function fileExists($name);
+
+	/**
+	 *
+	 * @param string $name
+	 * @return ISimpleFile
+	 * @throws NotFoundException
+	 * @since 9.2.0
+	 */
+	public function getFile($name);
+
+	/**
+	 * Creates a new file with $name in the folder
+	 *
+	 * @param string $name
+	 * @return ISimpleFile
+	 * @throws NotPermittedException
+	 * @since 9.2.0
+	 */
+	public function newFile($name);
+
+	/**
+	 * Remove the folder and all the files in it
+	 *
+	 * @throws NotPermittedException
+	 * @since 9.2.0
+	 */
+	public function delete();
+
+	/**
+	 * Get the folder name
+	 *
+	 * @return string
+	 * @since 9.2.0
+	 */
+	public function getName();
+}
diff --git a/lib/public/Files/SimpleFS/ISimpleRoot.php b/lib/public/Files/SimpleFS/ISimpleRoot.php
new file mode 100644
index 0000000000000000000000000000000000000000..a9b00540eb234157bb6c9c066e1e933a69adbfad
--- /dev/null
+++ b/lib/public/Files/SimpleFS/ISimpleRoot.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCP\Files\SimpleFS;
+
+use OCP\Files\NotFoundException;
+
+/**
+ * Interface ISimpleRoot
+ *
+ * @package OCP\Files\SimpleFS
+ * @since 9.2.0
+ * @internal This interface is experimental and might change for NC12
+ */
+interface ISimpleRoot {
+	/**
+	 * Get the folder with name $name
+	 *
+	 * @param string $name
+	 * @return ISimpleFolder
+	 * @throws NotFoundException
+	 * @since 9.2.0
+	 */
+	public function getFolder($name);
+
+	/**
+	 * Get all the Folders
+	 *
+	 * @return ISimpleFolder[]
+	 * @since 9.2.0
+	 */
+	public function getDirectoryListing();
+
+	/**
+	 * Create a new folder named $name
+	 *
+	 * @param string $name
+	 * @return ISimpleFolder
+	 * @since 9.2.0
+	 */
+	public function newFolder($name);
+}