diff --git a/lib/app.php b/lib/app.php
index 72b6693686ed215dbfbe3fa8a51b16c591811d2d..52c9f11456ac605e99b4e876e5b5d7fe10627ddf 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -21,6 +21,11 @@
  *
  */
 
+/**
+ * This class manages the apps. It allows them to register and integrate in the
+ * owncloud ecosystem. Furthermore, this class is responsible for installing,
+ * upgrading and removing apps.
+ */
 class OC_APP{
 	static private $init = false;
 	static private $apps = array();
diff --git a/lib/appconfig.php b/lib/appconfig.php
index 844d4cf54e8471c670a123866e4dc106f4c8adad..e8c6960e674753f4b8dd830d8d13cfb8300d4413 100644
--- a/lib/appconfig.php
+++ b/lib/appconfig.php
@@ -1,33 +1,119 @@
 <?php
+/**
+ * ownCloud
+ *
+ * @author Frank Karlitschek
+ * @author Jakob Sack
+ * @copyright 2010 Frank Karlitschek karlitschek@kde.org
+ *
+ * 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/>.
+ *
+ */
+/*
+ *
+ * The following SQL statement is just a help for developers and will not be
+ * executed!
+ *
+ * CREATE TABLE  `appconfig` (
+ * `appid` VARCHAR( 255 ) NOT NULL ,
+ * `key` VARCHAR( 255 ) NOT NULL ,
+ * `value` VARCHAR( 255 ) NOT NULL
+ * )
+ *
+ */
+
+/**
+ * This class provides an easy way for apps to store config values in the
+ * database.
+ */
 class OC_APPCONFIG{
 	/**
-	 * Get the available keys for an application
-	 * @param string application
+	 * @brief Get all apps using the config
+	 * @returns array with app ids
+	 *
+	 * This function returns a list of all apps that have at least one
+	 * entry in the appconfig table.
 	 */
-	public static function getKeys( $application ){
-		// OC_DB::query( $query);
+	public static function getApps(){
+		// TODO: write function
 		return array();
 	}
 
 	/**
-	 * Get the config value
-	 * @param string application
-	 * @param string key
-	 * @param string default
+	 * @brief Get the available keys for an app
+	 * @param $app the app we are looking for
+	 * @returns array with key names
+	 *
+	 * This function gets all keys of an app. Please note that the values are
+	 * not returned.
 	 */
-	public static function getValue( $application, $key, $default ){
+	public static function getKeys( $app ){
+		// TODO: write function
+		return array();
+	}
+
+	/**
+	 * @brief Gets the config value
+	 * @param $app app
+	 * @param $key key
+	 * @param $default = null, default value if the key does not exist
+	 * @returns the value or $default
+	 *
+	 * This function gets a value from the appconfig table. If the key does
+	 * not exist the default value will be returnes
+	 */
+	public static function getValue( $app, $key, $default = null ){
 		// OC_DB::query( $query);
 		return $default;
 	}
 
 	/**
-	 * Set the config value
-	 * @param string application
-	 * @param string key
-	 * @param string value
+	 * @brief sets a value in the appconfig
+	 * @param $app app
+	 * @param $key key
+	 * @param $value value
+	 * @returns true/false
+	 *
+	 * Sets a value. If the key did not exist before it will be created.
 	 */
-	public static function setValue( $application, $name, $url ){
-		// OC_DB::query( $query);
+	public static function setValue( $app, $key, $value ){
+		// TODO: write function
+		return true;
+	}
+
+	/**
+	 * @brief Deletes a key
+	 * @param $app app
+	 * @param $key key
+	 * @returns true/false
+	 *
+	 * Deletes a key.
+	 */
+	public static function deleteKey( $app, $key ){
+		// TODO: write function
+		return true;
+	}
+
+	/**
+	 * @brief Remove app from appconfig
+	 * @param $app app
+	 * @returns true/false
+	 *
+	 * Removes all keys in appconfig belonging to the app.
+	 */
+	public static function deleteApp( $app ){
+		// TODO: write function
 		return true;
 	}
 }
diff --git a/lib/preferences.php b/lib/preferences.php
index bd4ff55cc5c6a2c74079819a550d804da703319e..a7a2911cac75c24089d701529d2b2556eb6d618b 100644
--- a/lib/preferences.php
+++ b/lib/preferences.php
@@ -1,34 +1,162 @@
 <?php
+/**
+ * ownCloud
+ *
+ * @author Frank Karlitschek
+ * @author Jakob Sack
+ * @copyright 2010 Frank Karlitschek karlitschek@kde.org
+ *
+ * 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/>.
+ *
+ */
+/*
+ *
+ * The following SQL statement is just a help for developers and will not be
+ * executed!
+ *
+ * CREATE TABLE  `preferences` (
+ * `userid` VARCHAR( 255 ) NOT NULL ,
+ * `appid` VARCHAR( 255 ) NOT NULL ,
+ * `key` VARCHAR( 255 ) NOT NULL ,
+ * `value` VARCHAR( 255 ) NOT NULL
+ * )
+ *
+ */
+
+/**
+ * This class provides an easy way for storing user preferences.
+ */
 class OC_PREFERENCES{
-	static public $forms=array();
 	/**
-	 * Get the available keys for an application
-	 * @param string application
+	 * @brief Get all users using the preferences
+	 * @returns array with user ids
+	 *
+	 * This function returns a list of all users that have at least one entry
+	 * in the preferences table.
 	 */
-	public static function getKeys( $user, $application ){
-		// OC_DB::query( $query);
+	public static function getUsers(){
+		// TODO: write function
 		return array();
 	}
 
 	/**
-	 * Get the config value
-	 * @param string application
-	 * @param string key
-	 * @param string default
+	 * @brief Get all apps of a user
+	 * @param $user user
+	 * @returns array with app ids
+	 *
+	 * This function returns a list of all apps of the userthat have at least
+	 * one entry in the preferences table.
 	 */
-	public static function getValue( $user, $application, $key, $default ){
+	public static function getApps( $user ){
+		// TODO: write function
+		return array();
+	}
+
+	/**
+	 * @brief Get the available keys for an app
+	 * @param $user user
+	 * @param $app the app we are looking for
+	 * @returns array with key names
+	 *
+	 * This function gets all keys of an app of an user. Please note that the
+	 * values are not returned.
+	 */
+	public static function getKeys( $user, $app ){
+		// TODO: write function
+		return array();
+	}
+
+	/**
+	 * @brief Gets the preference
+	 * @param $user user
+	 * @param $app app
+	 * @param $key key
+	 * @param $default = null, default value if the key does not exist
+	 * @returns the value or $default
+	 *
+	 * This function gets a value from the prefernces table. If the key does
+	 * not exist the default value will be returnes
+	 */
+	public static function getValue( $user, $app, $key, $default = null ){
 		// OC_DB::query( $query);
 		return $default;
 	}
 
 	/**
-	 * Set the config value
-	 * @param string application
-	 * @param string key
-	 * @param string value
+	 * @brief sets a value in the preferences
+	 * @param $user user
+	 * @param $app app
+	 * @param $key key
+	 * @param $value value
+	 * @returns true/false
+	 *
+	 * Adds a value to the preferences. If the key did not exist before, it
+	 * will be added automagically.
 	 */
-	public static function setValue( $user, $application, $name, $url ){
-		// OC_DB::query( $query);
+	public static function setValue( $user, $app, $key, $value ){
+		// TODO: write function
+		return true;
+	}
+
+	/**
+	 * @brief Deletes a key
+	 * @param $user user
+	 * @param $app app
+	 * @param $key key
+	 * @returns true/false
+	 *
+	 * Deletes a key.
+	 */
+	public static function deleteKey( $user, $app, $key ){
+		// TODO: write function
+		return true;
+	}
+
+	/**
+	 * @brief Remove app of user from preferences
+	 * @param $user user
+	 * @param $app app
+	 * @returns true/false
+	 *
+	 * Removes all keys in appconfig belonging to the app and the user.
+	 */
+	public static function deleteApp( $user, $app ){
+		// TODO: write function
+		return true;
+	}
+
+	/**
+	 * @brief Remove user from preferences
+	 * @param $user user
+	 * @returns true/false
+	 *
+	 * Removes all keys in appconfig belonging to the user.
+	 */
+	public static function deleteUser( $user ){
+		// TODO: write function
+		return true;
+	}
+
+	/**
+	 * @brief Remove app from all users
+	 * @param $app app
+	 * @returns true/false
+	 *
+	 * Removes all keys in preferences belonging to the app.
+	 */
+	public static function deleteAppFromAllUsers( $app ){
+		// TODO: write function
 		return true;
 	}
 }