diff --git a/lib/app.php b/lib/app.php
index 82cffc279f2ff63a3ae068eb931e38c497d6f925..108226fc1a1a5074070ce8fe35c7fc5fc4caeb5f 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -588,6 +588,72 @@ class OC_App{
 		return $apps;
 	}
 
+	/**
+	 * @brief: Lists all apps, this is used in apps.php
+	 * @return array
+	 */
+	public static function listAllApps() {
+		$installedApps = OC_App::getAllApps();
+
+		//TODO which apps do we want to blacklist and how do we integrate blacklisting with the multi apps folder feature?
+
+		$blacklist = array('files');//we dont want to show configuration for these
+		$appList = array();
+
+		foreach ( $installedApps as $app ) {
+			if ( array_search( $app, $blacklist ) === false ) {
+
+				$info=OC_App::getAppInfo($app);
+
+				if (!isset($info['name'])) {
+					OC_Log::write('core', 'App id "'.$app.'" has no name in appinfo', OC_Log::ERROR);
+					continue;
+				}
+
+				if ( OC_Appconfig::getValue( $app, 'enabled', 'no') == 'yes' ) {
+					$active = true;
+				} else {
+					$active = false;
+				}
+
+				$info['active'] = $active;
+
+				if(isset($info['shipped']) and ($info['shipped']=='true')) {
+					$info['internal']=true;
+					$info['internallabel']='Internal App';
+				} else {
+					$info['internal']=false;
+					$info['internallabel']='3rd Party App';
+				}
+
+				$info['preview'] = OC_Helper::imagePath('settings', 'trans.png');
+				$info['version'] = OC_App::getAppVersion($app);
+				$appList[] = $info;
+			}
+		}
+		$remoteApps = OC_App::getAppstoreApps();
+		if ( $remoteApps ) {
+	// Remove duplicates
+			foreach ( $appList as $app ) {
+				foreach ( $remoteApps AS $key => $remote ) {
+					if (
+						$app['name'] == $remote['name']
+			// To set duplicate detection to use OCS ID instead of string name,
+			// enable this code, remove the line of code above,
+			// and add <ocs_id>[ID]</ocs_id> to info.xml of each 3rd party app:
+			// OR $app['ocs_id'] == $remote['ocs_id']
+						) {
+						unset( $remoteApps[$key]);
+				}
+			}
+		}
+		$combinedApps = array_merge( $appList, $remoteApps );
+	} else {
+		$combinedApps = $appList;
+	}	
+	return $combinedApps;	
+}
+
 	/**
 	 * @brief: get a list of all apps on apps.owncloud.com
 	 * @return array, multi-dimensional array of apps. Keys: id, name, type, typename, personid, license, detailpage, preview, changed, description
diff --git a/settings/apps.php b/settings/apps.php
index 99a3094399d6a42d8d619a69a3200164f9f9a485..9de7bdc80a7d7e00246f66ce24314cb4b71ba83b 100644
--- a/settings/apps.php
+++ b/settings/apps.php
@@ -29,95 +29,6 @@ OC_Util::addStyle( "settings", "settings" );
 OC_Util::addScript( "settings", "apps" );
 OC_App::setActiveNavigationEntry( "core_apps" );
 
-$installedApps = OC_App::getAllApps();
-
-//TODO which apps do we want to blacklist and how do we integrate blacklisting with the multi apps folder feature?
-
-$blacklist = array('files');//we dont want to show configuration for these
-
-$appList = array();
-
-foreach ( $installedApps as $app ) {
-
-	if ( array_search( $app, $blacklist ) === false ) {
-	
-		$info=OC_App::getAppInfo($app);
-		
-		if (!isset($info['name'])) {
-		
-			OC_Log::write('core', 'App id "'.$app.'" has no name in appinfo', OC_Log::ERROR);
-			
-			continue;
-			
-		}
-		
-		if ( OC_Appconfig::getValue( $app, 'enabled', 'no') == 'yes' ) {
-		
-			$active = true;
-			
-		} else {
-		
-			$active = false;
-			
-		}
-		
-		$info['active'] = $active;
-		
-		if(isset($info['shipped']) and ($info['shipped']=='true')) {
-		
-			$info['internal']=true;
-			
-			$info['internallabel']='Internal App';
-		
-		}else{
-		
-			$info['internal']=false;
-			
-			$info['internallabel']='3rd Party App';
-		
-		}
-		
-		$info['preview'] = OC_Helper::imagePath('settings', 'trans.png');
-		
-		$info['version'] = OC_App::getAppVersion($app);
-		
-		$appList[] = $info;
-		
-	}
-}
-
-$remoteApps = OC_App::getAppstoreApps();
-
-if ( $remoteApps ) {
-
-	// Remove duplicates
-	foreach ( $appList as $app ) {
-
-		foreach ( $remoteApps AS $key => $remote ) {
-		
-			if (
-			$app['name'] == $remote['name']
-			// To set duplicate detection to use OCS ID instead of string name,
-			// enable this code, remove the line of code above,
-			// and add <ocs_id>[ID]</ocs_id> to info.xml of each 3rd party app:
-			// OR $app['ocs_id'] == $remote['ocs_id']
-			) {
-				
-				unset( $remoteApps[$key]);
-			
-			}
-		
-		}
-		
-	}
-
-	$combinedApps = array_merge( $appList, $remoteApps );
-
-} else {
-
-	$combinedApps = $appList;
-	
-}
 
 function app_sort( $a, $b ) {