diff --git a/core/routes.php b/core/routes.php
new file mode 100644
index 0000000000000000000000000000000000000000..04b42d20598d5bf99454c6637359878c32b94b42
--- /dev/null
+++ b/core/routes.php
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+$this->create('app_css', '/apps/{app}/{file}')
+	->requirements(array('file' => '.*.css'))
+	->action('OC', 'loadCSSFile');
+$this->create('app_index_script', '/apps/{app}/')
+	->defaults(array('file' => 'index.php'))
+	//->requirements(array('file' => '.*.php'))
+	->action('OC', 'loadAppScriptFile');
+$this->create('app_script', '/apps/{app}/{file}')
+	->defaults(array('file' => 'index.php'))
+	->requirements(array('file' => '.*.php'))
+	->action('OC', 'loadAppScriptFile');
diff --git a/lib/base.php b/lib/base.php
index 0d7e224d354467faf98f50ede03a717322df61f7..3abfdb356687ed6c0ff16c16ca396eb8eac77d21 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -440,8 +440,8 @@ class OC{
 		}
 		// Someone is logged in :
 		if(OC_User::isLoggedIn()) {
-			OC_App::loadApps();
 			if(isset($_GET["logout"]) and ($_GET["logout"])) {
+				OC_App::loadApps();
 				OC_User::logout();
 				header("Location: ".OC::$WEBROOT.'/');
 			}else{
@@ -461,6 +461,7 @@ class OC{
 	}
 
 	public static function loadAppScriptFile($param) {
+		OC_App::loadApps();
 		$app = $param['app'];
 		$file = $param['file'];
 		$app_path = OC_App::getAppPath($app);
diff --git a/lib/router.php b/lib/router.php
index eca59d6dc3b2effd9b953b165894572a86c2b206..65fc51aff2cfd1432dac6e448ab09bf3d23bf520 100644
--- a/lib/router.php
+++ b/lib/router.php
@@ -34,6 +34,8 @@ class OC_Router {
 				$this->root->addCollection($collection, '/apps/'.$app);
 			}
 		}
+		$this->useCollection('root');
+		require_once('core/routes.php');
 	}
 
 	protected function getCollection($name) {