diff --git a/lib/db.php b/lib/db.php
index 9364b9e0015a91cd8671df775578db58ebfb4f12..d2552bff8f65c08b0fe3bde85cbe3f97027844a4 100644
--- a/lib/db.php
+++ b/lib/db.php
@@ -36,7 +36,25 @@ class OC_DB {
 	static private $affected=0;
 	static private $result=false;
 	static private $inTransaction=false;
+	static private $prefix=null;
+	static private $type=null;
 
+	/**
+	 * check which backend we should use
+	 * @return BACKEND_MDB2 or BACKEND_PDO
+	 */
+	private static function getDBBackend(){
+		$backend=self::BACKEND_MDB2;
+		if(class_exists('PDO') && OC_Config::getValue('installed', false)){//check if we can use PDO, else use MDB2 (instalation always needs to be done my mdb2)
+			$type = OC_Config::getValue( "dbtype", "sqlite" );
+			if($type=='sqlite3') $type='sqlite';
+			$drivers=PDO::getAvailableDrivers();
+			if(array_search($type,$drivers)!==false){
+				$backend=self::BACKEND_PDO;
+			}
+		}
+	}
+	
 	/**
 	 * @brief connects to the database
 	 * @returns true if connection can be established or nothing (die())
@@ -48,15 +66,7 @@ class OC_DB {
 			return;
 		}
 		if(is_null($backend)){
-			$backend=self::BACKEND_MDB2;
-			if(class_exists('PDO') && OC_Config::getValue('installed', false)){//check if we can use PDO, else use MDB2 (instalation always needs to be done my mdb2)
-				$type = OC_Config::getValue( "dbtype", "sqlite" );
-				if($type=='sqlite3') $type='sqlite';
-				$drivers=PDO::getAvailableDrivers();
-				if(array_search($type,$drivers)!==false){
-					$backend=self::BACKEND_PDO;
-				}
-			}
+			$backend=self::getDBBackend();
 		}
 		if($backend==self::BACKEND_PDO){
 			self::connectPDO();
@@ -423,8 +433,14 @@ class OC_DB {
 	private static function processQuery( $query ){
 		self::connect();
 		// We need Database type and table prefix
-		$type = OC_Config::getValue( "dbtype", "sqlite" );
-		$prefix = OC_Config::getValue( "dbtableprefix", "oc_" );
+		if(is_null(self::$type)){
+			self::$type=OC_Config::getValue( "dbtype", "oc_" );
+		}
+		$type = self::$type;
+		if(is_null(self::$prefix)){
+			self::$prefix=OC_Config::getValue( "dbtableprefix", "oc_" );
+		}
+		$prefix = self::$prefix;
 		
 		// differences in escaping of table names ('`' for mysql) and getting the current timestamp
 		if( $type == 'sqlite' || $type == 'sqlite3' ){
diff --git a/lib/l10n.php b/lib/l10n.php
index 636326f9864a84a4b3b718c09cf3ec4bb684eeb1..00bff08bf7faf8645a40c55da4334a4c4473eeb9 100644
--- a/lib/l10n.php
+++ b/lib/l10n.php
@@ -261,17 +261,14 @@ class OC_L10N{
 	public static function findAvailableLanguages($app=null){
 		$available=array('en');//english is always available
 		$dir = self::findI18nDir($app);
-		if(file_exists($dir)){
-			$dh = opendir($dir);
-			while(($file = readdir($dh)) !== false){
-				if(substr($file, -4, 4) == '.php' and (strlen($file) == 6 || strlen($file) == 9)){
+		if(is_dir($dir)){
+			$files=scandir($dir);
+			foreach($files as $file){
+				if(substr($file, -4, 4) == '.php'){
 					$i = substr($file, 0, -4);
-					if($i != ''){
-						$available[] = $i;
-					}
+					$available[] = $i;
 				}
 			}
-			closedir($dh);
 		}
 		return $available;
 	}