diff --git a/admin/appinfo/app.php b/admin/appinfo/app.php
index 9e39a0524435ad04776c02a8ce5d3e268b435a68..2426adc9f8acaddcdb67c0c29d584804329b43e3 100644
--- a/admin/appinfo/app.php
+++ b/admin/appinfo/app.php
@@ -1,14 +1,10 @@
 <?php
 
 OC_APP::register( array( "order" => 1, "id" => "admin", "name" => "Administration" ));
-if( OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' ))
-{
-	OC_APP::addNavigationEntry( array( "id" => "admin_index", "order" => 1, "href" => OC_HELPER::linkTo( "admin", "index.php" ), "icon" => OC_HELPER::imagePath( "admin", "navicon.png" ), "name" => "Administration" ));
-}
-OC_APP::addAdminPage( array( "id" => "core_basic", "order" => 1, "href" => OC_HELPER::linkTo( "admin", "basic.php" ), "name" => "Basic Settings" ));
-OC_APP::addAdminPage( array( "id" => "core_system", "order" => 2, "href" => OC_HELPER::linkTo( "admin", "system.php" ), "name" => "System settings" ));
-OC_APP::addAdminPage( array( "id" => "core_users", "order" => 3, "href" => OC_HELPER::linkTo( "admin", "users.php" ), "name" => "Users" ));
-OC_APP::addAdminPage( array( "id" => "core_apps", "order" => 4, "href" => OC_HELPER::linkTo( "admin", "apps.php" ), "name" => "Apps" ));
-OC_APP::addAdminPage( array( "id" => "core_plugins", "order" => 5, "href" => OC_HELPER::linkTo( "admin", "plugins.php" ), "name" => "Plugins" ));
+
+OC_APP::addAdminPage( array( "id" => "core_system", "order" => 2, "href" => OC_HELPER::linkTo( "admin", "system.php" ), "name" => "System settings", "icon" => OC_HELPER::imagePath( "admin", "navicon.png" )));
+OC_APP::addAdminPage( array( "id" => "core_users", "order" => 3, "href" => OC_HELPER::linkTo( "admin", "users.php" ), "name" => "Users", "icon" => OC_HELPER::imagePath( "admin", "navicon.png" )));
+OC_APP::addAdminPage( array( "id" => "core_apps", "order" => 4, "href" => OC_HELPER::linkTo( "admin", "apps.php" ), "name" => "Apps", "icon" => OC_HELPER::imagePath( "admin", "navicon.png" )));
+OC_APP::addAdminPage( array( "id" => "core_plugins", "order" => 5, "href" => OC_HELPER::linkTo( "admin", "plugins.php" ), "name" => "Plugins", "icon" => OC_HELPER::imagePath( "admin", "navicon.png" )));
 
 ?>
diff --git a/admin/apps.php b/admin/apps.php
new file mode 100644
index 0000000000000000000000000000000000000000..10bfd83c9b24a5d6162cad1644d1c61bd3b0bc93
--- /dev/null
+++ b/admin/apps.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+* ownCloud
+*
+* @author Frank Karlitschek
+* @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/>.
+*
+*/
+
+require_once('../lib/base.php');
+require( 'template.php' );
+if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){
+	header( "Location: ".OC_HELPER::linkTo( "index.php" ));
+	exit();
+}
+
+// We have some javascript foo!
+OC_UTIL::addScript( "admin", "apps" );
+
+
+$tmpl = new OC_TEMPLATE( "admin", "apps", "admin" );
+$tmpl->printPage();
+
+?>
+
diff --git a/admin/js/users.js b/admin/js/users.js
new file mode 100644
index 0000000000000000000000000000000000000000..6d59a2efb7c7c4cc92aea2d5116fe26c294493a5
--- /dev/null
+++ b/admin/js/users.js
@@ -0,0 +1,101 @@
+$(document).ready(function(){
+	// Dialog for adding users
+	$( "#adduser-form" ).dialog({
+		autoOpen: false,
+		height: 300,
+		width: 350,
+		modal: true,
+		buttons: {
+			"Create an account": function() {
+				$( this ).dialog( "close" );
+			},
+			Cancel: function() {
+				$( this ).dialog( "close" );
+			}
+		},
+		close: function() {
+			allFields.val( "" ).removeClass( "ui-state-error" );
+		}
+	});
+
+	$( "#adduser-button" )
+		.click(function() {
+			$( "#adduser-form" ).dialog( "open" );
+			return false;
+		});
+
+	// Dialog for adding users
+	$( "#edituser-form" ).dialog({
+		autoOpen: false,
+		height: 300,
+		width: 350,
+		modal: true,
+		buttons: {
+			"Edit password": function() {
+				$( this ).dialog( "close" );
+			},
+			Cancel: function() {
+				$( this ).dialog( "close" );
+			}
+		},
+		close: function() {
+			allFields.val( "" ).removeClass( "ui-state-error" );
+		}
+	});
+
+	$( ".edituser-button" )
+		.click(function() {
+			$( "#edituser-form" ).dialog( "open" );
+			return false;
+		});
+
+	// Dialog for adding users
+	$( "#removeuser-form" ).dialog({
+		autoOpen: false,
+		height: 300,
+		width: 350,
+		modal: true,
+		buttons: {
+			"Remove user": function() {
+				$( this ).dialog( "close" );
+			},
+			Cancel: function() {
+				$( this ).dialog( "close" );
+			}
+		},
+		close: function() {
+			allFields.val( "" ).removeClass( "ui-state-error" );
+		}
+	});
+
+	$( ".removeuser-button" )
+		.click(function() {
+			$( "#removeuser-form" ).dialog( "open" );
+			return false;
+		});
+
+	// Dialog for adding users
+	$( "#removegroup-form" ).dialog({
+		autoOpen: false,
+		height: 300,
+		width: 350,
+		modal: true,
+		buttons: {
+			"Remove group": function() {
+				$( this ).dialog( "close" );
+			},
+			Cancel: function() {
+				$( this ).dialog( "close" );
+			}
+		},
+		close: function() {
+			allFields.val( "" ).removeClass( "ui-state-error" );
+		}
+	});
+
+	$( ".removegroup-button" )
+		.click(function() {
+			$( "#removegroup-form" ).dialog( "open" );
+			return false;
+		});
+} );
diff --git a/files/appinfo/app.php b/files/appinfo/app.php
index a3532e805d2ef5cabf00de3def640307b1015b75..eff45cbe6e3ade3530970a3bd1a586db67626a1a 100644
--- a/files/appinfo/app.php
+++ b/files/appinfo/app.php
@@ -3,6 +3,6 @@
 OC_APP::register( array( "order" => 2, "id" => "files", "name" => "Files" ));
 
 OC_APP::addNavigationEntry( array( "id" => "files_index", "order" => 1, "href" => OC_HELPER::linkTo( "files", "index.php" ), "icon" => OC_HELPER::imagePath( "files", "navicon.png" ), "name" => "Files" ));
-OC_APP::addAdminPage( array( "order" => 1, "href" => OC_HELPER::linkTo( "files", "admin.php" ), "name" => "Files" ));
+OC_APP::addSettingsPage( array( "order" => 1, "href" => OC_HELPER::linkTo( "files", "admin.php" ), "name" => "Files" ));
 
 ?>
diff --git a/help/appinfo/app.php b/help/appinfo/app.php
new file mode 100644
index 0000000000000000000000000000000000000000..184f4d345bed388844d04ee413875557a10ec3ef
--- /dev/null
+++ b/help/appinfo/app.php
@@ -0,0 +1,6 @@
+<?php
+
+OC_APP::register( array( "id" => "help", "name" => "Help" ));
+OC_APP::addPersonalMenuEntry( array( "order" => 2, "href" => OC_HELPER::linkTo( "help", "index.php" ), "name" => "Help" ));
+
+?>
diff --git a/help/index.php b/help/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..0a54ddb9cf44a896af9715afe666112eb0917168
--- /dev/null
+++ b/help/index.php
@@ -0,0 +1,33 @@
+<?php
+
+require_once('../lib/base.php');
+require( 'template.php' );
+if( !OC_USER::isLoggedIn()){
+    header( "Location: ".OC_HELPER::linkTo( "index.php" ));
+    exit();
+}
+
+$settings = array();
+
+// Do the work ...
+if( $_POST["submit"] )
+{
+    if( $_POST["newpassword"] != $_POST["newpasswordconfirm"] ){
+        // Say "Passwords not equal"
+    }
+    else{
+        if( OC_USER::checkPassword( $_SESSION["username"], $_POST["password"] )){
+            // Set password
+            OC_USER::setPassord( $_SESSION["username"], $_POST["newpassword"] );
+        }
+        else{
+            // Say "old password bad"
+        }
+    }
+}
+
+$tmpl = new OC_TEMPLATE( "help", "index", "user" );
+$tmpl->assign( "settings", $settings );
+$tmpl->printPage();
+
+?>
diff --git a/help/templates/index.php b/help/templates/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..945969d88c59e9b9b51654f91803ac645e6ca514
--- /dev/null
+++ b/help/templates/index.php
@@ -0,0 +1,8 @@
+<?php
+/*
+ * Template for settings page
+ */
+?>
+<h1>Help</h1>
+
+Help.
\ No newline at end of file
diff --git a/img/layout/back.png b/img/layout/back.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2d5c841335d19c0f64b9b6aafdc275dd09a2bb7
Binary files /dev/null and b/img/layout/back.png differ
diff --git a/img/layout/help.png b/img/layout/help.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2d5c841335d19c0f64b9b6aafdc275dd09a2bb7
Binary files /dev/null and b/img/layout/help.png differ
diff --git a/img/layout/logout.png b/img/layout/logout.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2d5c841335d19c0f64b9b6aafdc275dd09a2bb7
Binary files /dev/null and b/img/layout/logout.png differ
diff --git a/img/layout/settings.png b/img/layout/settings.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2d5c841335d19c0f64b9b6aafdc275dd09a2bb7
Binary files /dev/null and b/img/layout/settings.png differ
diff --git a/lib/app.php b/lib/app.php
index 9f1ce6f104714d85028b0b013c5d778e45f6441f..b08733e04d924ecf540881ec4fc50057870f3dee 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -53,7 +53,7 @@ class OC_APP{
 		}
 
 		// Our very own core apps are hardcoded
-		foreach( array( "admin", "files", "log", "settings" ) as $app ){
+		foreach( array( "admin", "files", "log", "help", "settings" ) as $app ){
 			require( "$app/appinfo/app.php" );
 		}
 
@@ -165,11 +165,22 @@ class OC_APP{
 	 * property from all other entries. The templates can use this for
 	 * highlighting the current position of the user.
 	 */
-	public static function activateNavigationEntry( $id ){
+	public static function setActiveNavigationEntry( $id ){
 		self::$activeapp = $id;
 		return true;
 	}
 
+	/**
+	 * @brief gets the active Menu entry
+	 * @returns id or empty string
+	 *
+	 * This function returns the id of the active navigation entry (set by
+	 * setActiveNavigationEntry
+	 */
+	public static function getActiveNavigationEntry(){
+		return self::$activeapp;
+	}
+
 	/**
 	 * @brief adds an entry to the personal menu
 	 * @param $data array containing the data
diff --git a/lib/template.php b/lib/template.php
index c36b1e7a36743925be5306a262eddfa89264374a..fcf6334b956b4f448cd79e785c94608363db394b 100644
--- a/lib/template.php
+++ b/lib/template.php
@@ -190,11 +190,25 @@ class OC_TEMPLATE{
 			{
 				$page = new OC_TEMPLATE( "core", "layout.user" );
 				// Add menu data
+
+				// Add navigation entry and personal menu
+				$page->assign( "navigation", OC_APP::getNavigation());
+				$page->assign( "personalmenu", OC_APP::getPersonalMenu());
 			}
 			elseif( $this->renderas == "admin" )
 			{
 				$page = new OC_TEMPLATE( "core", "layout.admin" );
 				// Add menu data
+				$navigation = array();
+				if( OC_GROUP::inGroup( $_SESSION["user_id"], "admin" )){
+					foreach( OC_APP::getAdminPages() as $i ){
+						$navigation[] = $i;
+					}
+				}
+				foreach( OC_APP::getSettingsPages() as $i ){
+					$navigation[] = $i;
+				}
+				$page->assign( "navigation", $navigation );
 			}
 			else
 			{
@@ -210,10 +224,6 @@ class OC_TEMPLATE{
 				$page->append( "cssfiles", "$WEBROOT/$style.css" );
 			}
 
-			// Add navigation entry and personal menu
-			$page->assign( "navigation", OC_APP::getNavigation());
-			$page->assign( "personalmenu", OC_APP::getPersonalMenu());
-
 			// Add css files and js files
 			$page->assign( "content", $data );
 			return $page->fetchPage();
diff --git a/log/appinfo/app.php b/log/appinfo/app.php
index d3e848e960615ea2c9a49a943ed1df1afc61ccde..fd53d1ec225c1033751960fd933f335262f51683 100644
--- a/log/appinfo/app.php
+++ b/log/appinfo/app.php
@@ -1,6 +1,6 @@
 <?php
 
 OC_APP::register( array( "order" => 1, "id" => "log", "name" => "Log" ));
-OC_APP::addPersonalMenuEntry( array( "order" => 2, "href" => OC_HELPER::linkTo( "log", "index.php" ), "name" => "Log" ));
+OC_APP::addSettingsPage( array( "order" => 2, "href" => OC_HELPER::linkTo( "log", "index.php" ), "name" => "Log", "icon" => OC_HELPER::imagePath( "admin", "navicon.png" )));
 
 ?>
diff --git a/log/index.php b/log/index.php
index a401a38fa1ae98f09f4fc32ed020bc0c8de26cc6..23194f18a61bcdb64453d21838a51a9067e25cd3 100644
--- a/log/index.php
+++ b/log/index.php
@@ -37,7 +37,7 @@ foreach( $logs as &$i ){
     $i["action"] = OC_LOG::$TYPE[$i['type']];
 }
 
-$tmpl = new OC_TEMPLATE( "log", "index", "user" );
+$tmpl = new OC_TEMPLATE( "log", "index", "admin" );
 $tmpl->assign( "logs", $logs );
 $tmpl->printPage();
 
diff --git a/plugins/blacklist.txt b/plugins/blacklist.txt
index 08c79e5e75ee871662f417ef0c987d0e02bad5c9..e113a39d0b7a41dbc3c67ab2f93bc0ba70e0da75 100644
--- a/plugins/blacklist.txt
+++ b/plugins/blacklist.txt
@@ -2,3 +2,4 @@ audioplayer
 ldap
 test
 textviewer
+publiclink
diff --git a/settings/img/information.png b/settings/img/information.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbabb0e54a5f50e447982e63d9b9777c1bab64c0
Binary files /dev/null and b/settings/img/information.png differ
diff --git a/settings/index.php b/settings/index.php
index 85e4281c919b52b3c0be3c97270ef15e6e787941..31db326f6bc7cabfca607dbb7d1b0d9cc2bf429d 100644
--- a/settings/index.php
+++ b/settings/index.php
@@ -7,27 +7,8 @@ if( !OC_USER::isLoggedIn()){
     exit();
 }
 
-$settings = array();
 
-// Do the work ...
-if( $_POST["submit"] )
-{
-    if( $_POST["newpassword"] != $_POST["newpasswordconfirm"] ){
-        // Say "Passwords not equal"
-    }
-    else{
-        if( OC_USER::checkPassword( $_SESSION["username"], $_POST["password"] )){
-            // Set password
-            OC_USER::setPassord( $_SESSION["username"], $_POST["newpassword"] );
-        }
-        else{
-            // Say "old password bad"
-        }
-    }
-}
-
-$tmpl = new OC_TEMPLATE( "settings", "index", "user" );
-$tmpl->assign( "settings", $settings );
+$tmpl = new OC_TEMPLATE( "settings", "index", "admin" );
 $tmpl->printPage();
 
 ?>
diff --git a/settings/templates/index.php b/settings/templates/index.php
index 20410e06d12aab935a9990e2129ae9621d148cb7..106d313c014473e615b2af8bc9ba4e360688850c 100644
--- a/settings/templates/index.php
+++ b/settings/templates/index.php
@@ -5,20 +5,4 @@
 ?>
 <h1>Settings</h1>
 
-<form action="" type="">
-	<p>
-		<span>New password:</span>
-		<input type="password" name="newpassword" value="">
-	</p>
-	<p>
-		<span>Confirm new password:</span>
-		<input type="password" name="newpasswordconfirm" value="">
-	</p>
-	<p>
-		<span>Old password:</span>
-		<input type="password" name="password" value="">
-	</p>
-	<p>
-		<input type="submit" name="submit" value="Send">
-	</p>
-</form>
+Welcome to the settings! Bla bla bla
\ No newline at end of file
diff --git a/templates/layout.admin.php b/templates/layout.admin.php
index 85eba13827432c104288a3abd0009af705ba3f4b..ea352a0fb71bcf01937b606fbfd6e191bdd9cc50 100644
--- a/templates/layout.admin.php
+++ b/templates/layout.admin.php
@@ -22,20 +22,20 @@
 			<a href="<?php echo link_to("", "index.php"); ?>" title="" id="owncloud"><img src="<?php echo image_path("", "owncloud-logo-small-white.png"); ?>" alt="ownCloud" /></a>
 
 			<div id="user">
-				<a id="user_menu_link" href="" title=""><? echo $_SESSION["user_id"] ?></a>
-				<ul id="user_menu">
-					<?php foreach($_["personalmenu"] as $entry): ?>
-						<li><a href="<?php echo $entry["href"]; ?>" title=""><?php echo $entry["name"]; ?></a></li>
-					<?php endforeach; ?>
-				</ul>
+				<a href="<?php echo link_to("","index.php"); ?>" title=""><img src="<?php echo image_path("", "layout/back.png"); ?>"></a>
+				<a href="<?php echo link_to("settings","index.php"); ?>" title=""><img src="<?php echo image_path("", "layout/settings.png"); ?>"></a>
+				<a href="<?php echo link_to("help","index.php"); ?>" title=""><img src="<?php echo image_path("", "layout/help.png"); ?>"></a>
+				<a href="<?php echo link_to("","index.php?logout=true"); ?>" title=""><img src="<?php echo image_path("", "layout/logout.png"); ?>"></a>
 			</div>
 		</div>
 
 		<div id="main">
 			<div id="plugins">
 				<ul>
-					<li><a style="background-image:url(<?php echo image_path("admin", "navicon.png"); ?>)" href="<?php echo link_to("admin", "index.php"); ?>" title="">Administration</a></li>
-					<li><a style="background-image:url(<?php echo image_path("", "actions/arrow-left.png"); ?>)" href="<?php echo link_to("", "index.php"); ?>" title="">Back</a></li>
+					<li><a style="background-image:url(<?php echo image_path("settings", "information.png"); ?>)" href="<?php echo link_to("settings", "index.php"); ?>" title="">Information</a></li>
+					<?php foreach($_["navigation"] as $entry):?>
+						<li><a style="background-image:url(<?php echo $entry["icon"]; ?>)" href="<?php echo $entry["href"]; ?>" title=""><?php echo $entry["name"] ?></a></li>
+					<?php endforeach; ?>
 				</ul>
 			</div>
 
diff --git a/templates/layout.user.php b/templates/layout.user.php
index 9fc4f97e1dcdf5d77800e6b8eb0de7f698b15ed4..be14cc0fc0d61bdf7ed772e999393a8e7d8e34a9 100644
--- a/templates/layout.user.php
+++ b/templates/layout.user.php
@@ -22,12 +22,12 @@
 			<a href="<?php echo link_to("", "index.php"); ?>" title="" id="owncloud"><img src="<?php echo image_path("", "owncloud-logo-small-white.png"); ?>" alt="ownCloud" /></a>
 
 			<div id="user">
-				<a id="user_menu_link" href="" title=""><? echo $_SESSION["user_id"] ?></a>
-				<ul id="user_menu">
-					<?php foreach($_["personalmenu"] as $entry): ?>
-						<li><a href="<?php echo $entry["href"]; ?>" title=""><?php echo $entry["name"]; ?></a></li>
-					<?php endforeach; ?>
-				</ul>
+				<?php if( OC_APP::getActiveNavigationEntry() == "help" ): ?>
+					<a href="<?php echo link_to("","index.php"); ?>" title=""><img src="<?php echo image_path("", "layout/back.png"); ?>"></a>
+				<?php endif; ?>
+				<a href="<?php echo link_to("settings","index.php"); ?>" title=""><img src="<?php echo image_path("", "layout/settings.png"); ?>"></a>
+				<a href="<?php echo link_to("help","index.php"); ?>" title=""><img src="<?php echo image_path("", "layout/help.png"); ?>"></a>
+				<a href="<?php echo link_to("","index.php"); ?>?logout=true" title=""><img src="<?php echo image_path("", "layout/logout.png"); ?>"></a>
 			</div>
 		</div>